模拟,按照题目描述编码,注意特殊case的处理
class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
vector<string> ans;
int size = nums.size();
if(size != 0){
int i = 1;
string temp = to_string(nums[0]);
while(i < size){
if(nums[i] != nums[i - 1] + 1){
if(nums[i - 1] != atoi(temp.c_str())){
temp = temp + "->" + to_string(nums[i - 1]);
}
ans.push_back(temp);
temp = to_string(nums[i]);
}
i++;
}
if(temp.find(to_string(nums[size - 1])) == string::npos){
temp = temp + "->" + to_string(nums[size - 1]);
}
if(!ans.empty()){
string s = *(ans.end() - 1);
if(s.find(temp) == string::npos){
ans.push_back(temp);
}else{
//解决特殊的case [-2147483648,-2147483647,2147483647]
if((nums[size - 1] > 0 && string::npos != s.find(to_string(0 - nums[size - 1])))){
ans.push_back(temp);
}
}
}else{
ans.push_back(temp);
}
}
return ans;
}
};