leetcode 228: Summary Ranges

Use a window to keep track of all continuous numbers.

class Solution {
public:
    vector<string> summaryRanges(vector<int>& nums) {
        vector<string> res;
        int n=nums.size();
        if(n==0)
            return res;
        string range;
        stringstream ss;
        int start,end;
        start=end=nums[0];
        for(int i=1;i<n;i++)
        {
            if(nums[i]-end==1)
                end++;
            else
            {
                string num;
                ss<<start;
                ss>>num;
                ss.clear();
                range+=num;
                if(end!=start)
                {
                    ss<<end;
                    ss>>num;
                    ss.clear();
                    range+="->"+num;
                }
                res.push_back(range);
                range.clear();
                start=end=nums[i];
            }
        }
        string num;
        ss<<start;
        ss>>num;
        ss.clear();
        range+=num;
        if(end!=start)
        {
            ss<<end;
            ss>>num;
            ss.clear();
            range+="->"+num;
        }
        res.push_back(range);
        return res;
    }
};


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章