您的位置:首页 > 其它

Summary Ranges

2015-10-27 16:24 357 查看
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”].

对给定的没有重复数据且已经排序好的数组,进行分割,每部分的数据两两之间都是递增1,并记录为字符串数组的形式。

解法:

参考:http://blog.csdn.net/sunao2002002/article/details/46653021

使用两个变量保存每部分的首尾数字。

vector<string> summaryRanges(vector<int>& nums) {
vector<string> re;
int length = nums.size();
if (length < 1){
return re;
}
int l, r;
l = r = nums[0];
for (int k = 1; k < length; k++){
if (nums[k] == r || r + 1 == nums[k]){
r = nums[k];
}
else{
re.push_back(toString(l,r));
l = r = nums[k];
}
}
re.push_back(toString(l, r));
return re;
}
string toString(int l, int r){
//string str;
//if (l == r){
//  str = l;
//}
//else{
//  str = l + "->" + r;
//}
//return str;
//注释的这段代码不知道为啥不能将整型转化为字符串。
char buffer[32];
if (l == r){
sprintf_s(buffer, "%d", l);
}
else{
sprintf_s(buffer, "%d->%d", l, r);
}
return string(buffer);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: