解决问题的思路:两指针算法
代码如下:
class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
vector<string> result;
string buf;
vector<int>::iterator iter1, iter2;
iter1 = nums.begin();
iter2 = nums.begin();
int counter;
for(; iter1 < nums.end(); ) {
buf.clear();
counter = 0;
for(iter2 = iter1 + 1; iter2 < nums.end(); ) {
if((*iter2 - *(iter2 - 1) == 1) || (*iter2 - *(iter2 - 1) == 0)) {
iter2++;
counter++;
}else
break;
}
buf += std::to_string(*iter1);
if(counter > 0) {
buf += "->";
buf += std::to_string(*(iter2 - 1));
}
result.push_back(buf);
iter1 = iter2;
}
return result;
}
};