LEETCODE--Summary Ranges

原创 2015年11月19日 17:35:55

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”].
方法一:
本问题最大的障碍就是实现将int类型转换为字符串;
在此方法中使用了sprintf()函数
百度百科介绍sprintf
详细讲解sprintf()

我的理解:
我认为sprintf是C语言中的函数,因为在使用时括号中的参数需要定义数据类型(如本程序中的%d),而且只能用诸如char a[]的字符串数组进行操作(sprintf与printf的区别就是,sprintf是将结果输出在字符串中,而printf将结果输出在控制台窗口中);
另外:为了配合c++操作在Add程序的返回时进行强制类型转换(return string(buffer);)

class Solution {
public:
    string Add(int begin, int end){
        char buffer[30];
        if(end == begin)
            sprintf(buffer,"%d",end);
        else
            sprintf(buffer,"%d->%d",begin, end);
        return string(buffer);
    }
    vector<string> summaryRanges(vector<int>& nums) {
        vector<string> finsh;
        int len = nums.size();
        if(len == 0)
            return finsh;
        int end = nums[0];
        int begin = nums[0];
        for(int i = 1; i < len; i++){
            if(end == nums[i] || (end + 1) == nums[i])
                end = nums[i];
            else{
                string next =  Add(begin, end);
                finsh.push_back(next);
                begin = nums[i];
                end = nums[i];
            }
        }
        string next = Add(begin, end);
        finsh.push_back(next);
    }
};

方法二:
此方法使用了to_string()来进行类型转换;
详解to_string

class Solution {
public:
    string Add(int begin, int end){
        string s;
        if(begin == end)
            s = to_string(end);
        else{
            s = to_string(begin) + "->";
            s += to_string(end);
        }
        return s;
    }
    vector<string> summaryRanges(vector<int>& nums) {
        vector<string> finsh;
        int len = nums.size();
        if(len == 0)
            return finsh;
        int end = nums[0];
        int begin = nums[0];
        for(int i = 1; i < len; i++){
            if(end == nums[i] || (end + 1) == nums[i])
                end = nums[i];
            else{
                string next =  Add(begin, end);
                finsh.push_back(next);
                begin = nums[i];
                end = nums[i];
            }
        }
        string next = Add(begin, end);
        finsh.push_back(next);
    }
};

方法三:
利用stringstream流进行存储转换;
参考
注意:stringstream类型变量的位置不能改变,要优先写在每行的开头;

class Solution {
public:
    string Add(int begin, int end){
        string s;
        string s1;
        if(begin == end){
            stringstream ss; 
            ss << end;
            ss >> s1;
            s = s1;
        }
        else{
            stringstream ss; 
            ss << begin;
            ss >> s1;
            ss.clear();
            s += s1;
            s +='-';
            s +='>';
            ss << end;
            ss >> s1;
            s += s1;
        }
        return s;
    }
    vector<string> summaryRanges(vector<int>& nums) {
        vector<string> finsh;
        int len = nums.size();
        if(len == 0)
            return finsh;
        int end = nums[0];
        int begin = nums[0];
        for(int i = 1; i < len; i++){
            if(end == nums[i] || (end + 1) == nums[i])
                end = nums[i];
            else{
                string next =  Add(begin, end);
                finsh.push_back(next);
                begin = nums[i];
                end = nums[i];
            }
        }
        string next = Add(begin, end);
        finsh.push_back(next);
    }
};

相关文章推荐

Leetcode_228_Summary Ranges

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/46762039 Given a sorted in...

leetcode--Summary Ranges

题目: Given a sorted integer array without duplicates, return the summary of its ranges. For example...

【LeetCode OJ 228】Summary Ranges

题目链接:https://leetcode.com/problems/summary-ranges/ 题目: Given a sorted integer array without dupl...

Leetcode——228. Summary Ranges

题目Given a sorted integer array without duplicates, return the summary of its ranges.For example, giv...

LeetCode228——Summary Ranges

leetcode刷题日记——Summary Ranges 1.题目内容: Given a sorted integer array without duplicates, return the su...

228. Summary Ranges

Given a sorted integer array without duplicates, return the summary of its ranges. For example, giv...
  • iFuMI
  • iFuMI
  • 2016年03月22日 17:13
  • 202

Summary Ranges 问题解答

前段时间刷了几道leetcode上面的题,觉得比较有意思,但由于没有记录,所以过一段时间就忘记了。计划在这里对每刷的一道题都进行总结,本次的题如下:题目 Given a sorted integer...

Summary Ranges

1 题目描述 Given a sorted integer array without duplicates, return the summary of its ranges. For exa...

228. Summary Ranges\59. Spiral Matrix II\64. Minimum Path Sum

Summary Ranges 题目描述 代码实现 Spiral Matrix II 题目描述 代码实现 Minimum Path Sum 题目描述 代码实现228. Summary Ranges题目描...

Leetcode 163. Missing Ranges

163. Missing Ranges Total Accepted: 18160 Total Submissions: 60189 Difficulty: Medium Cont...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LEETCODE--Summary Ranges
举报原因:
原因补充:

(最多只允许输入30个字)