解题思路:
将字符串转成数组再转成集合,然后按位比较,时间复杂度O(n),空间复杂度O(n),感觉题目给的空间复杂度O(1)实现不了,有大佬可以实现的话希望不吝赐教
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 比较版本号
* @param version1 string字符串
* @param version2 string字符串
* @return int整型
*/
public int compare (String version1, String version2) {
String[] str1 = version1.split("\\.");
String[] str2 = version2.split("\\.");
int maxLength = str1.length > str2.length ? str1.length : str2.length;
// 补0对齐
List<String> list1 = new ArrayList<String>(Arrays.asList(str1));
for (int i = list1.size(); i < maxLength; i++) {
list1.add("0");
}
List<String> list2 = new ArrayList<String>(Arrays.asList(str2));
for (int i = list2.size(); i < maxLength; i++) {
list2.add("0");
}
for (int i = 0; i < maxLength; i++) {
String val1 = list1.get(i);
String val2 = list2.get(i);
if (Integer.parseInt(val1) < Integer.parseInt(val2)) {
return -1;
} else if (Integer.parseInt(val1) > Integer.parseInt(val2)) {
return 1;
}
}
return 0;
}
}