LeetCode(68)-Compare Version Numbers
タイトル:
考え方:題:2つのバージョン番号文字列のサイズを比較する 文字列をsplitで配列に変換し、split(.)に注意し、次に整数配列に変換し、比較を遍歴します.注意バージョン番号の後ろがゼロの場合 コード:
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
考え方:
public class Solution {
public int compareVersion(String version1, String version2) {
String[] v1,v2;
if(version1.indexOf(".") == -1){
v1 = new String[1];
v1[0] = version1;
}else{
v1 = new String[version1.split("\\.").length];
v1 = version1.split("\\.");
}
if(version2.indexOf(".") == -1){
v2 = new String[1];
v2[0] = version2;
}else{
v2 = new String[version2.split("\\.").length];
v2 = version2.split("\\.");
}
int[] array1 = sToInt(v1);
int[] array2 = sToInt(v2);
int nn = Math.min(array1.length,array2.length);
for(int a = 0;a < nn;a++){
if(array1[a] > array2[a]){
return 1;
}else if(array1[a] < array2[a]){
return -1;
}
}
if(array1.length > array2.length){
for(int k = nn; k < array1.length;k++){
if(array1[k] != 0){
return 1;
}
}
return 0;
}else if(array1.length < array2.length){
for(int m = nn;m < array2.length;m++){
if(array2[m] != 0){
return -1;
}
}
return 0;
}
return 0;
}
public int[] sToInt(String[] ss){
int n = ss.length;
int[] result = new int[n];
for(int i = 0;i < n;i++){
try{
result[i] = Integer.parseInt(ss[i]);
}catch(Exception e){
}
}
return result;
}
}