Skip to content

Commit 7459736

Browse files
compare version numbers
1 parent 152b7c6 commit 7459736

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed
+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package easy;
2+
3+
public class CompareVersionNumbers {
4+
5+
public static int compareVersion(String version1, String version2) {
6+
String[] v1s = version1.split("\\.");//escaping it is very important! Otherwise, it's not going to work as expected!
7+
String[] v2s = version2.split("\\.");
8+
int len = (v1s.length < v2s.length) ? v2s.length : v1s.length;
9+
for(int i = 0; i < len; i++){
10+
if(v1s.length == i){
11+
while(i < len){
12+
if(Integer.parseInt(v2s[i]) > 0) return -1;
13+
i++;
14+
}
15+
} else if(v2s.length == i){
16+
while(i < len){
17+
if(Integer.parseInt(v1s[i]) > 0) return 1;
18+
i++;
19+
}
20+
} else {
21+
if(Integer.parseInt(v1s[i]) > Integer.parseInt(v2s[i])) return 1;
22+
else if(Integer.parseInt(v2s[i]) > Integer.parseInt(v1s[i])) return -1;
23+
else continue;//this line is not necessary, but just to make the logic more clear
24+
}
25+
}
26+
return 0;
27+
}
28+
29+
public static void main(String...args){
30+
// String version1 = "1.1";
31+
// String version2 = "1.2";//should return -1
32+
33+
// String version1 = "1.0.1";
34+
// String version2 = "1";//should return 1
35+
36+
String version1 = "1.0";
37+
String version2 = "1";//should return 0
38+
39+
/**"1.0.1", "1"*/
40+
System.out.println(compareVersion(version1, version2));
41+
}
42+
43+
}

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
|189|[Rotate Array](https://leetcode.com/problems/rotate-array/)|[Solution](../../blob/master/EASY/src/easy/RotateArray.java)| O(n)|O(n), could be optimized to O(1) | Easy
3333
|173|[Binary Search Tree Iterator](https://leetcode.com/problems/binary-search-tree-iterator/)|[Queue](../../blob/master/MEDIUM/src/medium/BSTIterator_using_q.java) [Stack](../../blob/master/MEDIUM/src/medium/BSTIterator_using_stack.java)| O(1) |O(h) | Medium|
3434
|172|[Factorial Trailing Zeroes](https://leetcode.com/problems/factorial-trailing-zeroes/)|[Solution](../../blob/master/EASY/src/easy/FactorialTrailingZeroes.java)| O(logn)|O(1)| Easy
35+
|165|[Compare Version Numbers](https://leetcode.com/problems/compare-version-numbers/)|[Solution](../../blob/master/EASY/src/easy/CompareVersionNumbers.java)| O(n)|O(1) | Easy|
3536
|162|[Find Peak Element](https://leetcode.com/problems/find-peak-element/)|[Solution](../../blob/master/MEDIUM/src/medium/FindPeakElement.java) | O(1) |O(logn)/O(n) | Binary Search|
3637
|155|[Min Stack](https://leetcode.com/problems/min-stack/)|[Solution](../../blob/master/EASY/src/easy/MinStack.java)| O(1)|O(n) | Easy| Stack
3738
|140|[Word Break II](https://leetcode.com/problems/word-break-ii/)|[Solution](../../blob/master/HARD/src/hard/WordBreakII.java)| ? |O(n^2) | Hard| Backtracking/DFS

0 commit comments

Comments
 (0)