【leetcode 字符串处理】Compare Version Numbers


@author:wepon
@blog:http://blog.csdn.net/u012162613

1、题目

Compare two version numbers version1 and version1.

If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0.

You may assume that the version strings are non-empty and contain only digits and the . character.

The . character does not represent a decimal point and is used to separate
number sequences.

For instance, 2.5 is not "two and a half" or "half way to version three",
it is the fifth second-level revision of the second first-level revision.

Here is an example of version numbers ordering:

0.1 < 1.1 < 1.2 < 13.37

2、分析

题意:题意非常清晰。就是比較“版本”大小。给定的版本version1和version2是字符串类型的。当version1>version2的时候。返回1。反之返回-1。


这道题属于细节处理题,除了字符串处理繁琐一点之外没有什么。

解题思路:先分别将version1、version2字符串按'.'切割成多个子串,每一个子串转化成整型存入容器。

最后再比較两个容器中相应位置的数的大小。

当然须要考虑它们长度不同的情况。


注意点:
(1)version的形式:10.23.1、01.23、1.2.3.4....诸如此类
(2)字符串转化成整型,我的程序中直接用库函数stoi()

3、代码

class Solution {
public:
int compareVersion(string version1, string version2) {
vector<int> result1=getInt(version1);
vector<int> result2=getInt(version2);
int len1=result1.size();
int len2=result2.size();
if(len2<len1) return -1*compareVersion(version2, version1);
int i=0;
while(i<len1 && result1[i]==result2[i]) i++; if(i==len1){ //str1和str2前len1位都相等,则看看str2后面的len2-len1位是否都为0就可以推断它们的大小
int j=len2-1;
while(j >= len1){
if(result2[j--]!=0) return -1;
}
return 0;
}else{ //str1和str2前len1位不都相等。直接推断第i位
if(result1[i]<result2[i]) return -1;
else return 1;
}
}
private:
//将version字符串按'.'拆成多个。转化为整型放入容器
vector<int> getInt(string version){
vector<int> result;
int len=version.size();
int pre=0;
for(int i=0;i<len;i++){
if(version[i]=='.'){
string str(version.begin()+pre,version.begin()+i); //注意这样的初始化形式,左闭右开,即str不包含version[version.begin()+i]
result.push_back(stoi(str));
pre=i+1;
}
}
string str(version.begin()+pre,version.end());
result.push_back(stoi(str));
return result;
}
};

【leetcode 字符串处理】Compare Version Numbers的更多相关文章

  1. 【LeetCode】165. Compare Version Numbers 解题报告(Python)

    [LeetCode]165. Compare Version Numbers 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博 ...

  2. 【刷题-LeetCode】165 Compare Version Numbers

    Compare Version Numbers Compare two version numbers version1 and version2. If *version1* > *versi ...

  3. LeetCode OJ:Compare Version Numbers(比较版本字符串)

    Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 &l ...

  4. 【LeetCode】165 - Compare Version Numbers

    Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 &l ...

  5. 【一天一道LeetCode】#165. Compare Version Numbers

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 来源: htt ...

  6. 165. Compare Version Numbers - LeetCode

    Question 165. Compare Version Numbers Solution 题目大意: 比较版本号大小 思路: 根据逗号将版本号字符串转成数组,再比较每个数的大小 Java实现: p ...

  7. 2016.5.21——Compare Version Numbers

    Compare Version Numbers 本题收获: 1.字符串型数字转化为整型数字的方法:s[i] - '0',( 将字母转化为数字是[i]-'A'   ) 2.srt.at(),substr ...

  8. ✡ leetcode 165. Compare Version Numbers 比较两个字符串数字的大小 --------- java

    Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 &l ...

  9. [LeetCode] Compare Version Numbers 字符串操作

    Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 &l ...

随机推荐

  1. 软件-集成开发环境:IDE

    ylbtech-软件-集成开发环境:IDE 集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器.编译器. ...

  2. php 0,null,empty,空,false,字符串关系(转)

    在php中由于是弱类型语言,不同类型值之间可以隐式转换,使得false,null,”,0,’0′这几个值的比较有些混乱,现总结一下: //相等判断 '' == NULL == 0 == false ( ...

  3. [HTML] 如何使用robots.txt防止搜索引擎抓取页面

    Robots.txt 文件对抓取网络的搜索引擎漫游器(称为漫游器)进行限制.这些漫游器是自动的,在它们访问网页前会查看是否存在限制其访问特定网页的 robots.txt 文件.如果你想保护网站上的某些 ...

  4. MongoDB Master-Slave cluster with authentication setup

    Master Server create mongo db folder with sub folders like data, conf, && log mkdir -p /opt/ ...

  5. [ Tools ] [ MobaXterm ] [ SSH ] [ Linux ] export and import saved session

    How to export MobaXterm sessions to another computer? https://superuser.com/questions/858973/how-to- ...

  6. RFID 知识的学习

    * 部分资料来自我们博士的PPT,部分来自网络和他人的论文. * 我们使用的教材是清华大学出版社出版的<智能卡技术(第四版)——IC卡.RFID标签与物联网(清华大学计算机系列教材)>(王 ...

  7. DataGridView属性设置汇总

    1.标题列居中 外观  ColumnHeadersDefaultCellStyle - Alignment - MiddleCenter 2.表格内容居中 外观  DefaultCellStyle - ...

  8. 开源作品-PHP写的在线文件管理工具(单文件绿色版)-SuExplorer_PHP_3_0

    前言:项目开发过程中,网站一般部署到远程服务器,所以文件管理就不能和本机操作一样方便.通常文件管理是用ftp下载到本地,修改后再上传,或者远程登录到服务器进行修改.但是这些操作都依赖于复杂的第三方软件 ...

  9. houxiurong.com 关于Tomcat7部署 一台机器部署两个项目,一个用域名访问,一个用IP访问

    该内容来自 http://houxiurong.com,转载请说明出处. 1.使用IP访问的项目放在Tomcat7 的webapps目录下面:比如:AAA 2.使用域名访问的项目放在Tomcat7的w ...

  10. Rx (Reactive Extensions)介绍

    Reactive Extensions (Rx) 原来是由微软提出的一个综合了异步和基于事件驱动编程的库包,使用可观察序列和LINQ-style查询操作. 使用Rx, 开发者可以用Observable ...