[leet code 165]Compare Version Numbers
1 题目
Compare two version numbers version1 and version2.
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
Credits:
Special thanks to @ts for adding this problem and creating all test cases.
2 思路
好吧,这题很蛋疼,各种情况。有1.0与1比较的,有1.2.3与1.2比较的,考虑到各种情况,很复杂。还发现java里面split函数输入是正则表达式,要用"."符号分割的话,得这样.split"\\.",才能分割。
网上查了查,有一个思路是用递归解决的,http://www.tuicool.com/articles/3QV7NvV。完美解决 比较 1.0与1的问题。
我感觉实际操作中,会规定死版本的格式吧。如1.2.3与1.0.0。另外,我看实际中的一个代码,只要发现两个版本的字符串不一样,就提醒用户更新版本- -。
3 代码
public int compareVersion(String version1, String version2) {
if(version1.equals(version2))
return 0;
int fversion1 , fversion2;//最左边字符串代表的数字
String sversion1,sversion2;//剔除.号左边的数字剩下的字符串
if(version1.contains(".")){
int pos = version1.indexOf(".");
fversion1 = Integer.valueOf(version1.substring(0,pos));
sversion1 = version1.substring(pos+1,version1.length());
}else {
fversion1 = Integer.valueOf(version1);
sversion1 = "0";//预防比较1.0与1这种情况
}
if(version2.contains(".")){
int pos = version2.indexOf(".");
fversion2 = Integer.valueOf(version2.substring(0,pos));
sversion2 = version2.substring(pos+1,version2.length());
}else {
fversion2 = Integer.valueOf(version2);
sversion2 = "0";
}
if(fversion1 > fversion2)
return 1;
else if(fversion1 < fversion2)
return -1;
else return compareVersion(sversion1, sversion2);
}
[leet code 165]Compare Version Numbers的更多相关文章
- 【LeetCode】165. Compare Version Numbers 解题报告(Python)
[LeetCode]165. Compare Version Numbers 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博 ...
- 165. Compare Version Numbers - LeetCode
Question 165. Compare Version Numbers Solution 题目大意: 比较版本号大小 思路: 根据逗号将版本号字符串转成数组,再比较每个数的大小 Java实现: p ...
- 【刷题-LeetCode】165 Compare Version Numbers
Compare Version Numbers Compare two version numbers version1 and version2. If *version1* > *versi ...
- ✡ leetcode 165. Compare Version Numbers 比较两个字符串数字的大小 --------- java
Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 &l ...
- Java for LeetCode 165 Compare Version Numbers
Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 &l ...
- 【LeetCode】165 - Compare Version Numbers
Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 &l ...
- Java [Leetcode 165]Compare Version Numbers
题目描述: Compare two version numbers version1 and version2.If version1 > version2 return 1, if versi ...
- 165. Compare Version Numbers
题目: Compare two version numbers version1 and version2.If version1 > version2 return 1, if version ...
- 【一天一道LeetCode】#165. Compare Version Numbers
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 来源: htt ...
随机推荐
- MySQL数据库相关操作
查看数据库 mysql> SHOW DATABASES; 选择数据库 mysql> USE 数据库名称: 查看当前数据库 mysql> select database(); -- 第 ...
- maven web+spring mvc项目没有出现src/main/java路径
直接在main 文件夹下创建java可以解决 https://www.cnblogs.com/zhujiabin/p/6343462.html
- netty1 快速入门
Netty是一个高性能.异步事件驱动的网路通信框架 ,由于精力有限,本人并没有对其源 码做了特别细致的研究.如果下面的内容有错误或不严谨的地方,也请大家指正和谅解. Netty的线程模型是Reacto ...
- having 的用法
聚合函数 where 后面不能直接使用聚合函数 处理函数 题目 编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱. 示例: +----+---------+ | Id | Email ...
- 自定义注解与validation结合使用案例
编写validation自定义注解: @Target({ ElementType.FIELD, ElementType.METHOD })@Retention(RetentionPolicy.RUNT ...
- bootstrap 中 css 与 javascript 的使用
1.css 1.1.选择器 1.2.子选择器: css 里的子元素用符号'>'表示.如下示例是表示拥有table样式的表盒,其thead元素内的tr元素如果有th的话,则应用该样式. .tabl ...
- ueditor 上传图片
ueditor在配置图片,附件上传 首先,是以web项目为基础的,需要安装好eclipse以及tomcat 其次,需要下载ueditor(可去百度官网下载 http://ueditor.baidu. ...
- MZOJ 1134: 二叉苹果树
按书上大的,dfs还需加强 #include <bits/stdc++.h> #define read read() using namespace std; int read { ; c ...
- 2018.12.31 bzoj4001: [TJOI2015]概率论(生成函数)
传送门 生成函数好题. 题意简述:求nnn个点的树的叶子数期望值. 思路: 考虑fnf_nfn表示nnn个节点的树的数量. 所以有递推式f0=1,fn=∑i=0n−1fifn−1−i(n>0) ...
- 2018.11.07 codeforces559C. Gerald and Giant Chess(dp+组合数学)
传送门 令f[i]f[i]f[i]表示对于第iii个棋子,从(1,1)(1,1)(1,1)出发到它不经过其它棋子的方案数. 于是我们假设(h,w)(h,w)(h,w)有一个棋子,求出它的fff值就可以 ...