Summary Ranges

来源:互联网 发布:麒麟 高通835 知乎 编辑:程序博客网 时间:2024/06/02 05:33

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);}
0 0