题目:
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"].
分析:
我觉得主要是在于把int转换成string型,同时还有就是最末位的处理,其他的都没什么了。
代码:
class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
int i=0;
vector<string> res;
int startI=i;
int endI=i;
while(i<nums.size()){
startI=i;
while(i<nums.size()-1&&nums[i]+1==nums[i+1])i++;
endI=i;
i++;
string s;
if(endI==startI)s=itos(nums[endI]);
else s=itos(nums[startI])+"->"+itos(nums[endI]);
res.push_back(s);
}
return res;
}
private:
string itos(int i) {
string s;
int flag = 1;
if (i<0) {
flag = 0;
}
if (i == 0)s = "0";
else while (i) {
if (flag) {
s.insert(s.begin(), i % 10 + '0');
i /= 10;
}
else {
s.insert(s.begin(), -(i % 10) + '0');
i /= 10;
}
}
if (!flag)s.insert(s.begin(), '-');
return s;
}
};