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

HTTP之Range理解

1、什么是Range?   当用户在听一首歌的时候,如果听到一半(网络下载了一半),网络断掉了,用户需要继续听的时候,文件服务器不支持断点的话,则用户需要重新下载这个文件。而Range支持的话,...
  • hj520wj
  • hj520wj
  • 2015年06月12日 17:28
  • 2343

[LeetCode刷题笔记] 关于LeetCode的前言

又到了一年毕业就业季了,三年前的校招季我逃避了,可这一次终于还是要轮到我了=_=||。 作为要准备踏入码农行业的人来说,要准备校招,怎么能不去刷刷LeetCode呢? LeetCode收录了许多互联网...
  • tostq
  • tostq
  • 2016年07月22日 21:32
  • 2956

关于centos7和centos6中平滑升级nginx到新版本v1.12.1修复nginx最新漏洞CVE-2017-7529的解决方案

关于centos7和centos6中平滑升级nginx到新版本v1.12.1修复CVE-2017-7529漏洞的解决方案 漏洞描述 2017年7月11日,Nginx官方发布最新的安全公告,...
  • nightstar84
  • nightstar84
  • 2017年07月14日 09:57
  • 2610

Leetcode_228_Summary Ranges

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

leetcode--Summary Ranges

题目: Given a sorted integer array without duplicates, return the summary of its ranges. For example...
  • u013830811
  • u013830811
  • 2015年06月26日 16:42
  • 356

【LeetCode OJ 228】Summary Ranges

题目链接:https://leetcode.com/problems/summary-ranges/ 题目: Given a sorted integer array without dupl...
  • xujian_2014
  • xujian_2014
  • 2015年11月20日 09:49
  • 352

LeetCode228——Summary Ranges

leetcode刷题日记——Summary Ranges 1.题目内容: Given a sorted integer array without duplicates, return the su...
  • u012062841
  • u012062841
  • 2015年07月12日 17:41
  • 371

Leetcode——228. Summary Ranges

题目Given a sorted integer array without duplicates, return the summary of its ranges.For example, giv...
  • starstar1992
  • starstar1992
  • 2017年01月10日 19:09
  • 144

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
  • 234

Summary Ranges 问题解答

前段时间刷了几道leetcode上面的题,觉得比较有意思,但由于没有记录,所以过一段时间就忘记了。计划在这里对每刷的一道题都进行总结,本次的题如下:题目 Given a sorted integer...
  • bingham2015
  • bingham2015
  • 2015年06月28日 09:49
  • 282
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LEETCODE--Summary Ranges
举报原因:
原因补充:

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