原题如下
https://leetcode-cn.com/problems/compare-version-numbers/
题解
方法一
思路很简单,就是,把版本号的数字以“.”为分隔分成若干组;在组数相同的情况下,从第一组开始比较,直到出现数值不一样的,就分别出版本先后;倘若长度不一样,若是可以在较短版本号内比较出大小则输出结果,倘若比不出来,较长的哪个版本号,后面多出来的几组数字,只要有大于0的数字,那么较长的版版本号就是较新的,否则两个版本相同。
本思路java代码:
/*
*作者@v7fgg
*执行用时 :1 ms, 在所有 Java 提交中击败了96.59%的用户
*内存消耗 :37.7 MB, 在所有 Java 提交中击败了20.00%的用户
*2020年6月5日 16:29
*/
class Solution {
public int compareVersion(String version1, String version2) {
String v1[]=version1.split("\\.");
String v2[]=version2.split("\\.");
int i1[]=new int[v1.length];
int i2[]=new int[v2.length];
for(int i=0;i<v1.length;i++){
i1[i]=Integer.parseInt(v1[i]);
}
for(int i=0;i<v2.length;i++){
i2[i]=Integer.parseInt(v2[i]);
}
return qianda(i1,i2);
}
public int qianda(int[] a1,int[] a2){
int l1=a1.length;
int l2=a2.length;
if(l1>=l2){
for(int i=0;i<l2;i++){
if(a1[i]>a2[i]){return 1;}
if(a1[i]<a2[i]){return -1;}
if(i==l2-1){
for(int j=l2;j<l1;j++){
if(a1[j]>0){return 1;}
}
}
}return 0;
}
else{
return -qianda(a2,a1);
}
}
}