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"].
前几天看到有同学留言了这道题,题目要求把排序好的数组合并成区间,难度为easy。
题目还是比较简单的,留言的同学可能是在字符串处理以及是否是单个数字代表一个区间的判断上有些困惑。对于字符串的处理可以使用to_string函数或者stringstream,其他的应该没什么难度了。具体代码:
class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
vector<string> summary;
string curRange;
int begin;
int len = nums.size();
if(nums.empty()) return summary;
curRange = to_string(nums[0]);
begin = nums[0];
for(int i=1; i<len; i++) {
if(nums[i] != nums[i-1] + 1) {
if(nums[i-1] != begin) {
curRange += "->";
curRange += to_string(nums[i-1]);
}
summary.push_back(curRange);
curRange = to_string(nums[i]);
begin = nums[i];
}
}
if(nums[len-1] != begin) {
curRange += "->";
curRange += to_string(nums[len-1]);
}
summary.push_back(curRange);
return summary;
}
};