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"].
class Solution {
public:
string format(int begin, int end)
{
char buffer[32];
if (end == begin)
{
sprintf(buffer, "%d", begin);
}else{
sprintf(buffer, "%d->%d", begin, end);
}
return string(buffer);
}
vector<string> summaryRanges(vector<int>& nums)
{
if(nums.size() == 0)
{
return vector<string>();
}
vector<string> svec;
int start = 0;
int end = 0;
string tmp = "";
/*if(nums.size() == 1)
{
svec.push_back(format(nums[0], nums[0]));
return svec;
}*/
for(int i = 1; i < nums.size(); ++i)
{
if((nums[i] - nums[i - 1]) != 1)
{
tmp = format(nums[start], nums[i - 1]);
svec.push_back(tmp);
start = i;
tmp = "";
}
}
svec.push_back(format(nums[start], nums[nums.size() - 1]));
return svec;
}
};