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
A:
思路就是一个个取出来比较。
public class Solution { public int compareVersion(String version1, String version2) { version1=version1.trim(); version2 = version2.trim(); if(version1.length()==0) return version2.length()==0?0:(isZero(version2)?0:-1); if(version2.length()==0) return version1.length()==0?0:(isZero(version1)?0:1); int i1 = version1.indexOf('.'), i2 = version2.indexOf('.'); int n1,n2; if(i1 == -1){ n1 = Integer.parseInt(version1); version1 = ""; }else{ n1 = Integer.parseInt(version1.substring(0,i1)); version1 = version1.substring(i1+1); } if(i2 == -1){ n2 = Integer.parseInt(version2); version2 = ""; }else{ n2 = Integer.parseInt(version2.substring(0,i2)); version2 = version2.substring(i2+1); } return n1==n2?compareVersion(version1,version2):(n1>n2?1:-1); } public boolean isZero(String str){ if(str.length()==0) return true; char ch = str.charAt(0); if(ch =='0' || ch=='.') return isZero(str.substring(1)); else return false; } }
Mistakes:
没考虑这种情况:
1: 1.0 和 1
2: 1.000.00 和 1
-----------第二遍-----犯了同样的错误-----------------
public class Solution { public int compareVersion(String version1, String version2) { List<Integer> l1 = new LinkedList<>(), l2 = new LinkedList<>(); for(String ss: version1.split("\\.")) l1.add(Integer.parseInt(ss)); for(String ss : version2.split("\\.")) l2.add(Integer.parseInt(ss)); int m = l1.size(), n = l2.size(); for(int i =0;i< Math.max(m,n);i++){ int a =i>=m?0:l1.get(i), b = i>=n?0:l2.get(i); if(a>b) return 1; else if(a<b) return -1; } return 0; } }
No comments:
Post a Comment