leetcode [#165]

目录

题目

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.

Example
Here is an example of version numbers ordering:
0.1 < 1.1 < 1.2 < 13.37


解决方案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class Solution {
public int compareVersion(String version1, String version2) {
String[] arr1 = version1.split("\\.");
String[] arr2 = version2.split("\\.");
List<String> list1 = new ArrayList<>();
List<String> list2 = new ArrayList<>();
for(int i = 0; i < arr1.length; i++){
list1.add(arr1[i]);
}
for(int i = 0; i < arr2.length; i++){
list2.add(arr2[i]);
}
int b1 = list1.size();
int b2 = list2.size();
if(b1 > b2){
for(int k = 0; k < (b1 - b2); k++){
list2.add("0");
}
}
if(b1 < b2){
for(int k = 0; k < (b2 - b1); k++){
list1.add("0");
}
}
int result = 0;
for(int m = 0; m < list1.size(); m++){
if(Integer.valueOf(list1.get(m)) > Integer.valueOf(list2.get(m))){
result = 1;
break;
}
if(Integer.valueOf(list1.get(m)) < Integer.valueOf(list2.get(m))){
result = -1;
break;
}
}
return result;
}
}

注意事项

  1. 先将字符串按“.”分割。
  2. 将分割后数组每个元素装入ArrayList并补齐长度。
  3. 依次比较两个list中的每个元素即可。