Problem
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.
You may assume the default revision number for each level of a version number to be 0. For example, version number 3.4 has a revision number of 3 and 4 for its first and second level revision number. Its third and fourth level revision number are both 0.
Example 1:
1 | |
Example 2:
1 | |
Example 3:
1 | |
Example 4:
1 | |
Example 5:
1 | |
Note:
- Version strings are composed of numeric strings separated by dots
.and this numeric strings may have leading zeroes. - Version strings do not start or end with dots, and they will not be two consecutive dots.
Explanation 1
-
We can split the version string by
.and convert the substring to integer and compare their version. -
If one string finish splitting, in other word, another string has more length, then we can make the short string as
0by default and compare the long substring.
Solution 1
1 | |
Explanation 2
- We can also save space by not splitting, instead before we hit the
., we can iterate each character and calculate the character into number by usingres=res*10+abefore we hit the..
Solution 2
1 | |