Summary Ranges
来源:互联网 发布:java运维工程师面试题 编辑:程序博客网 时间:2024/05/22 06:24
题目名称
Summary Ranges—LeetCode链接
描述
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"]
.
分析
这道题题目意思很明确,对一个给定的整数集合,寻找它的数字域,连续的数字为一个数字域,当一个数字与左边和右边数字都不连续时,它的数字域就是本身。
C++代码
class Solution {public: vector<string> summaryRanges(vector<int>& nums) { stringstream ss; vector<string> res; if(nums.size()==0) //定义数字域的左迭代器和右迭代器 vector<int>::iterator left,right; //遍历整个数字集合 for(left=nums.begin();left!=nums.end();left++){ //寻找数字域的右端 for(right=left;right+1!=nums.end() && *(right+1)==*right+1;right++){} //左右端相等,表明是单个数字的数字域 if(right==left){ ss.str(""); ss<<*left; cout<<"ss.str():"<<ss.str()<<endl; res.push_back(ss.str()); } else{ string s; ss.str(""); ss<<*left; s=ss.str()+"->"; ss.str(""); ss<<*right; s+=ss.str(); cout<<"s:"<<s<<endl; res.push_back(s); } left=right; } return res; }};
总结
题目有一个难点就是int类型转换成string类型,好在我们之前介绍过用stringstream进行数据类型转换。因为每次都要用到这个输入输出流,所以在对它操作之前一定要清空流的内容,例如定义一个stringsream ss,则可以用ss.str(“”)来清空流中内容,本题中多次用到该方法。(注意ss.clear()与ss.str(“”)的区别,前者只是清空状态位,并没有清空内容。)
0 0
- Summary Ranges
- summary ranges
- Summary Ranges
- Summary Ranges
- Summary Ranges
- Summary Ranges
- Summary Ranges
- Summary Ranges
- Summary Ranges
- Summary Ranges
- Summary Ranges
- Summary Ranges
- Summary ranges
- Summary Ranges
- Summary Ranges
- Summary Ranges
- Summary Ranges
- Summary Ranges
- Android配置文件权限一览表
- Linux TcpDump Wireshark文件导出
- Numpy 基础
- 什么是夫妻间相互继承遗产的权利
- php设计模式-单例模式-工厂模式
- Summary Ranges
- 我们为什么要学习iOS?
- yaffs2文件系统移植出错:usage: ./patch-ker.sh c/l m/s kerneipath
- Jenkins+Gradle+findbugs对Android工程源码进行静态代码分析
- 企业源代码加密软件保护机制
- Android布局之屏幕自适应
- 北航上机测试准备 程序2
- Makefile中使用定义空格变量,并对其查找替换
- 从源码角度理解android动画Interpolator类的使用