Java-Compare Version Numbers
Compare two version numbersVersion1AndVersion1.
IfVersion1>Version2Return 1, ifVersion1<Version2Return-1, otherwise return 0.
You may assume that the version strings are non-empty and contain only digits and.
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 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.
Compare the old and new versions
Compare the values of the numbers before each. In order of the. Field, split the values, and output the values equal. In this case, the code is equivalent to the values of 1 and 1.0;
public class Solution { public static int compareVersion(String version1, String version2) {return compare(version1, 0, version2, 0);} public static int compare(String version1,int st1, String version2,int st2) {int ssa = 1;int ssb = 1;if (st1 == version1.length() || st1 == version1.length() + 1) {ssa = 0;if (st2 == version2.length() || st2 == version2.length() + 1) {return 0;} }if (st2 == version2.length() || st2 == version2.length() + 1) {ssb = 0;if (st1 == version1.length() || st1 == version1.length() + 1) {return 0;} }int i = st1;int a=0;if (ssa != 0) {String s1 = "";for (; i < version1.length(); i++) {if (version1.charAt(i) == '.')break;elses1 = s1 + version1.charAt(i);}a = Integer.valueOf(s1);}int j = st2;int b=0;if (ssb != 0) {String s2 = "";for (; j < version2.length(); j++) {if (version2.charAt(j) == '.')break;elses2 = s2 + version2.charAt(j);}b = Integer.valueOf(s2);}if (a > b)return 1;else {if (a < b)return -1;else {if(ssa==0||ssb==0)return 0;else return compare(version1, i + 1, version2, j + 1);}}}}