Use a window to keep track of all continuous numbers.
class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
vector<string> res;
int n=nums.size();
if(n==0)
return res;
string range;
stringstream ss;
int start,end;
start=end=nums[0];
for(int i=1;i<n;i++)
{
if(nums[i]-end==1)
end++;
else
{
string num;
ss<<start;
ss>>num;
ss.clear();
range+=num;
if(end!=start)
{
ss<<end;
ss>>num;
ss.clear();
range+="->"+num;
}
res.push_back(range);
range.clear();
start=end=nums[i];
}
}
string num;
ss<<start;
ss>>num;
ss.clear();
range+=num;
if(end!=start)
{
ss<<end;
ss>>num;
ss.clear();
range+="->"+num;
}
res.push_back(range);
return res;
}
};