leetcode系列(18)Summary Ranges

来源:互联网 发布:网络电视要多少兆宽带 编辑:程序博客网 时间:2024/05/21 22:44

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"].

题目很简单,就是写代码的时候注意corner case就可以了,比如只有一个字符,最后一个字符等,直接上代码吧:

C++代码

class Solution {public:    vector<string> summaryRanges(vector<int>& nums) {        std::vector<string> ret;        int i = 0;        while (i < nums.size()) {            int start = nums[i];            ++i;            std::string range(std::to_string(start)); // std::to_string since c11            for (int j = i; j < nums.size(); ) {                if (nums[j] != (nums[j - 1] + 1)) {                    break;                } else {                    ++i;                    ++j;                }            }            int end = nums[i - 1];            if (start < end) {                range = range + "->" + std::to_string(end);            }            ret.push_back(range);        }        return ret;    }};
Python代码

class Solution:    # @param {integer[]} nums    # @return {string[]}    def summaryRanges(self, nums):        ret = []        i = 0        while i < len(nums):            start = nums[i]            rg = str(start)            i += 1            j = i            while j < len(nums):                if nums[j] != nums[j - 1] + 1:                    break                else:                    i += 1                    j += 1            end = nums[i - 1]            if start != end:                rg = rg + '->' + str(end)            ret.append(rg)        return ret



0 0
原创粉丝点击