题目:
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 numToStr(int num) {
char tmp[30] = {0};
sprintf(tmp, "%d", num);
return string(tmp);
}
string numPairToString(int a, int b) {
if (a == b) {
return numToStr(a);
} else {
return numToStr(a) + "->" + numToStr(b);
}
}
vector<string> summaryRanges(vector<int>& nums) {
if (nums.size() < 1) {
return vector<string>();
} else if (nums.size() == 1) {
vector<string> rtn;
rtn.push_back(numToStr(nums[0]));
return rtn;
}
vector<string> rtn;
int iBegin = nums[0];
int iLast = nums[0];
for (int i = 1; i != nums.size(); ++ i) {
if (iLast != nums[i] - 1) {
rtn.push_back(numPairToString(iBegin, iLast));
iBegin = nums[i];
iLast = nums[i];
} else {
iLast = nums[i];
}
}
rtn.push_back(numPairToString(iBegin, iLast));
return rtn;
}
};