# LeetCode笔记：165. Compare Version Numbers

## 问题：

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.
Here is an example of version numbers ordering:

0.1 < 1.1 < 1.2 < 13.37

## 大意：

“.”字符不表示小数点，是用来区分数字序号的。

0.1 < 1.1 < 1.2 < 13.37

• 1.1 和 1.2
• 1 和 1.0
• 1 和 1.0.1
• 1.00.0 和 1.0
• 1 和 1.00

## 代码（Java）：

``````public class Solution {
public int compareVersion(String version1, String version2) {
String[] arr1 = version1.split("\\.");
String[] arr2 = version2.split("\\.");
// System.out.println(arr1.length + " " + arr2.length);
int i = 0;
while (i < arr1.length && i < arr2.length) {
// System.out.println(arr1[i] + " " + arr2[i]);
int a = Integer.valueOf(arr1[i]).intValue();
int b = Integer.valueOf(arr2[i]).intValue();
if (a > b) return 1;
else if (a < b) return -1;

i++;
}
if (i < arr1.length) {
while (i < arr1.length) {
int version = Integer.valueOf(arr1[i]).intValue();
if (version != 0) return 1;
i++;
}
return 0;
}
else if ( i < arr2.length) {
while (i < arr2.length) {
int version = Integer.valueOf(arr2[i]).intValue();
if (version != 0) return -1;
i++;
}
return 0;
}
else return 0;
}
}
``````