您的位置:首页 > 其它

Leetcode 165. Compare Version Numbers

2016-02-12 23:39 106 查看
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

Java代码如下:

public class Solution {
public int compareVersion(String version1, String version2) {
// 得到两个version的长度
int size1 = version1.split("\\.").length;
int size2 = version2.split("\\.").length;
// 对较短的进行补全
if(size1 > size2) {
for(int i = 0; i < (size1 - size2); i++) {
version2 = version2 + ".0";
}
}
else if(size1 < size2) {
for(int i = 0; i < (size2 - size1); i++) {
version1 = version1 + ".0";
}
}
// 逐个进行比较
int size = size1 > size2 ? size1 : size2;
String[] array1 = version1.split("\\.");
String[] array2 = version2.split("\\.");
for(int i = 0; i < size; i++) {
int a = Integer.parseInt(array1[i]);
int b = Integer.parseInt(array2[i]);
if(a > b) {
return 1;
}
else if(a < b){
return -1;
}
}
return 0;
}
}


这里进行了补全,但是看到了更简单的方法

public class Solution {
public int compareVersion(String version1, String version2) {
if(version1 == null || version2 ==null) return 0;

String[] v1 = version1.split("\\.");
String[] v2 = version2.split("\\.");

int n1 = v1.length;
int n2 = v2.length;

int i=0;

while(i<n1 || i<n2) {
int x1 = i<n1 ? Integer.parseInt(v1[i]) : 0;
int x2 = i<n2 ? Integer.parseInt(v2[i]) : 0;
if(x1 > x2) return 1;
else if(x1 < x2) return -1;
else ++i;
}

return 0;

}
}


不进行补全,用逻辑表达式进行长度比较,代码更少,更简单。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: