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的更多相关文章

  1. [LeetCode] 165. Compare Version Numbers 比较版本数

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

  2. Java for LeetCode 165 Compare Version Numbers

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

  3. Java [Leetcode 165]Compare Version Numbers

    题目描述: Compare two version numbers version1 and version2.If version1 > version2 return 1, if versi ...

  4. Leetcode 165 Compare Version Numbers

    题意:比较版本号的大小 有点变态,容易犯错 本质是字符串的比较,请注意他的版本号的小数点不知1个,有的会出现01.0.01这样的变态版本号 class Solution { public: int c ...

  5. 165. Compare Version Numbers - LeetCode

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

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

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

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

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

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

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

  9. 【LeetCode】165 - Compare Version Numbers

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

随机推荐

  1. 【树莓派】使用树莓派制作img镜像(一)

    最近一直在折腾树莓派,前几天装了10台设备,最近又来了15台开发板子.基本每台设备都需要进行如下操作: 1.安装树莓派OS,并配置键盘.时区.语言编码格式等: 2.新增组.用户.配置静态IP地址: 3 ...

  2. vi/vim基本使用方法

    vi/vim 基本使用方法本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了!i/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所 ...

  3. jQuery核心之DOM操作的常用方法

    参考jQuery官网API文档 1..attr() 获取 :  ); 3.选择器与常用方法: ) .html( "new text for the third h3!" ) .en ...

  4. SQL LOADER 的用法 TXT文件导入非常之快

    前提,需要本地安装ORACLE 客户端 控制文件 cms.ctl load dataCHARACTERSET UTF8infile 'oracle.txt'APPEND INTO TABLE JR f ...

  5. 讲解Python中的递归函数

    本文的最重要的收获在于:尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式. 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 举个例 ...

  6. Python3.X新特性之print和exec

    print print 现在是一个函数,不再是一个语句.<语法更为清晰> 实例1 打开文件 log.txt 以便进行写入并将对象指定给 fid.然后利用 print将一个字符串重定向给文件 ...

  7. knn原理与实践

    knn法是一种基本分类与回归方法 应用:knn算法不仅可以用于分类,还可以用于回归.. 1.文本分类:文本分类主要应用于信息检索,机器翻译,自动文摘,信息过滤,邮件分类等任务. 2.可以使用knn算法 ...

  8. json 解析 真是一篇让我泪流满面的好文章

    http://my.eoe.cn/iceskysl/archive/19629.html点击打开链接

  9. Yii2框架安装(windows)

    -->安装PHP环境Wamp集成环境,XAMMP等.-->安装Composerhttp://pan.baidu.com/s/1i3fejjvPS:安装过程中的有一个手动操作项选择php.e ...

  10. js 扩展Array支持remove方法

    /* * 方法:Array.remove(dx) 通过遍历,重构数组 * 功能:删除数组元素. * 参数:dx删除元素的下标. */ Array.prototype.remove = function ...