标签:
Given a sorted integer array without duplicates, return the summary of its ranges.
For example, given [0,1,2,4,5,7], return ["0->2","4->5","7"].
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
#include<iostream>
#include<string>
#include<vector>
#include<math.h>
using namespace std;
//将整数转化为字符串输出,这里需要考虑整数的大小,
//开始使用int发现在最小的负值时时不行的。
string ToString(long long int n)
{
string str;
if(n<0)
{
str.push_back(‘-‘);
n=-n;
}
string str1;
while(1)
{
int b=n%10;
str1.push_back(b+48);
n=n/10;
if(n==0)
break;
}
while(!str1.empty())
{
str.push_back(str1.back());
str1.pop_back();
}
return str;
}
vector<string> summaryRanges(vector<int>& nums) {
vector<string> vec;
string str;
if(nums.empty())
return vec;
int n=nums.size();
int i=0;
while(i<n)
{
int a1=nums[i];
if(i==n-1)
{
str.clear();
str=ToString(nums[i]);
vec.push_back(str);
break;
}
int a2;
int j=i+1;
while(j<n)
{
if(j>n)
break;
if(nums[j]==nums[j-1]+1)
j++;
else
break;
}
a2=nums[j-1];
if(j-1==i)
{
str.clear();
str=ToString(nums[i]);
vec.push_back(str);
}
else
{
str.clear();
int a;
str=ToString(nums[i]);
str=str+"->";
str=str+ToString(nums[j-1]);
vec.push_back(str);
}
i=j;
}
return vec;
}
int main()
{
/*
int a[10]={-2147483648,-2147483647,2147483647};
vector<int> vec(a,a+3);
vector<string> re=summaryRanges(vec);
int n=re.size();
for(vector<string>::iterator i=re.begin();i!=re.end();i++)
{
cout<<*i<<endl;
}*/
string str=ToString(-1);
cout<<str<<endl;
}
标签:
原文地址:http://www.cnblogs.com/yanliang12138/p/4650350.html