LEETCODE--Summary Ranges
来源:互联网 发布:windows 2008 dhcp 编辑:程序博客网 时间:2024/06/16 08:30
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); }};
0 0
- leetcode 228: Summary Ranges
- Leetcode 228 Summary Ranges
- leetcode--Summary Ranges
- LeetCode 228: Summary Ranges
- [leetcode] Summary Ranges
- 【Leetcode】Summary Ranges
- Summary Ranges - LeetCode 228
- 【LeetCode】Summary Ranges
- [LeetCode]Summary Ranges
- [leetcode] Summary Ranges
- [leetcode][array] Summary Ranges
- leetcode[228]:Summary Ranges
- [LeetCode] Summary Ranges
- #leetcode#Summary Ranges
- leetcode summary-ranges
- Leetcode|Summary Ranges
- [leetCode] Summary Ranges
- [leetcode]Summary Ranges
- 《第一行代码--Android》读书笔记之广播机制
- 关于一页数据较多的查询--有道笔记的整理
- android代码混淆后gson无法解析问题
- 在CentOS安装CMake (CentOS7 64位适用)
- HTTP协议详解
- LEETCODE--Summary Ranges
- 设计模式--有道笔记的整理
- SVM总结及SMO简单实现
- c++ txt文件的读写及乱码问题解决
- 奇葩问题:ListView中Item与Item中的Button不能单击问题
- ImageView根据图片横竖自适应调整宽高
- ButterKnife基本使用
- 在录入数据时可能会遇到的问题--有道笔记的整理
- 欢迎使用CSDN-markdown编辑器