✡ leetcode 165. Compare Version Numbers 比较两个字符串数字的大小 --------- java
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
比较两个字符串数字的大小:(小数点可能不止一个)
注意的地方:
1、多个小数点的处理。
2、考虑清楚细节就可以了,题目本身不难。
1、直接判断,代码较多。
public class Solution {
public int compareVersion(String version1, String version2) {
int len1 = version1.length();
int len2 = version2.length();
int start1 = 0;
int start2 = 0;
int[] nums = new int[2];
while (start1 < len1 && start2 < len2){
nums = getNum(version1, start1, len1);
int num1 = nums[1];
start1 = nums[0];
nums = getNum(version2, start2, len2);
int num2 = nums[1];
start2 = nums[0];
if (num1 > num2){
return 1;
} else if (num1 < num2){
return -1;
}
}
if (start1 >= len1 && start1 >= len2){
return 0;
} else if (start1 >= len1){
while (start2 < len2){
nums = getNum(version2, start2, len2);
if (nums[1] != 0){
return -1;
}
start2 = nums[0];
}
return 0;
} else {
while (start1 < len1){
nums = getNum(version1, start1, len1);
if (nums[1] != 0){
return 1;
}
start1 = nums[0];
}
return 0;
}
}
public int[] getNum(String str, int start, int len){
int end = start;
int[] result = new int[2];
while (end < len && str.charAt(end) != '.'){
end++;
}
result[0] = end+1;
if( end == start){
result[1] = 0;
} else {
result[1] = Integer.valueOf(str.substring(start,end));
}
return result;
}
}
2、同样的处理方式,也有很简单的写法(参考discuss)
public class Solution {
public int compareVersion(String version1, String version2) {
int temp1 = 0,temp2 = 0;
int len1 = version1.length(),len2 = version2.length();
int i = 0,j = 0;
while(i<len1 || j<len2) {
temp1 = 0;
temp2 = 0;
while(i<len1 && version1.charAt(i) != '.') {
temp1 = temp1*10 + version1.charAt(i++)-'0';
}
while(j<len2 && version2.charAt(j) != '.') {
temp2 = temp2*10 + version2.charAt(j++)-'0'; }
if(temp1>temp2) return 1;
else if(temp1<temp2) return -1;
else {
i++;
j++; } }
return 0;
}
}
3、使用split()。(参考discuss)
public int compareVersion(String version1, String version2) { String[] v1 = version1.split("\\.");
String[] v2 = version2.split("\\."); for ( int i = 0; i < Math.max(v1.length, v2.length); i++ ) {
int num1 = i < v1.length ? Integer.parseInt( v1[i] ) : 0;
int num2 = i < v2.length ? Integer.parseInt( v2[i] ) : 0;
if ( num1 < num2 ) {
return -1;
} else if ( num1 > num2 ) {
return +1;
}
} return 0;
}
✡ leetcode 165. Compare Version Numbers 比较两个字符串数字的大小 --------- java的更多相关文章
- [LeetCode] 165. Compare Version Numbers 比较版本数
Compare two version numbers version1 and version1.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 ...
- Java [Leetcode 165]Compare Version Numbers
题目描述: Compare two version numbers version1 and version2.If version1 > version2 return 1, if versi ...
- Leetcode 165 Compare Version Numbers
题意:比较版本号的大小 有点变态,容易犯错 本质是字符串的比较,请注意他的版本号的小数点不知1个,有的会出现01.0.01这样的变态版本号 class Solution { public: int c ...
- 165. Compare Version Numbers - LeetCode
Question 165. Compare Version Numbers Solution 题目大意: 比较版本号大小 思路: 根据逗号将版本号字符串转成数组,再比较每个数的大小 Java实现: p ...
- 【LeetCode】165. Compare Version Numbers 解题报告(Python)
[LeetCode]165. Compare Version Numbers 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博 ...
- 【刷题-LeetCode】165 Compare Version Numbers
Compare Version Numbers Compare two version numbers version1 and version2. If *version1* > *versi ...
- 【一天一道LeetCode】#165. Compare Version Numbers
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 来源: htt ...
- 【LeetCode】165 - Compare Version Numbers
Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 &l ...
随机推荐
- hosts代理
hosts代理文件:C:\Windows\System32\drivers\etc\HOSTS 内容如下: # Copyright (c) -, racaljk. # https://github.c ...
- js插入动态脚本
原文章:https://www.w3cmm.com/dom/insert-javascript.html 动态脚本指的是在页面加载时不存在,但将来的某一时刻通过修改该DOM动态添加的脚本.和操作HTM ...
- mac 激活Ultra Edit16
一.文本编辑器UltraEdit 参照Ultra Edit16.10 Mac 破解下载,或者官方下载 Ultra Edit16即可 printf of=/Applications/UltraEdit. ...
- android,NDK android.mk相关
1.c++ try...catch的支持 需要在Android.mk 中添加 LOCAL_CPPFLAGS += -fexceptions,或者在Application.mk中添加APP_CPPFLA ...
- $inArray()总是返回-1
$inArray(val,arr)注意val类型和arr中的是否一致 如1 和"1" 就会返回-1
- SCCM 2007日志
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://ycrsjxy.blog.51cto.com/618627/203174 ...
- 网页项目——i家居网站
本文介绍一个网页项目--i家居网站,小妹初来乍到,欢迎大家评论建议O(∩_∩)O~ 详细源代码.各种框架的实现以及素材均已上传百度云,需要的可以下载: 首页展示 用户注册页面 用户登录页面 商家注册页 ...
- WCF双向通信,心跳
合肥程序员群:49313181. 合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入)Q Q:408365330 E-Mail:egojit@qq.com WCF中双程 ...
- WPF 让Enter键按下时默认为某按钮(Button)事件
在编写web程序时我们经常用到按Enter键来提交表单,在WPF中我们也常常需要这样的功能:例如在填写登录框信息时当填写完密码之后我希望直接按Enter键就能完成登录操作.这个需求如何来完成呢? 其实 ...
- SQL Server 2008中查看锁信息
;with tran_locks as(select resource_type,db_name(resource_database_id) as db_name,resource_descripti ...