題目地址:
https://leetcode.com/problems/compare-version-numbers/
給定兩個版本號,判斷大小。規定較舊的版本號小。
用兩個指針,每次解析出一個數字出來比較大小,如果不等,則返回Integer.compare()
後的值,否則繼續遍歷。如果遍歷到了字符串最後,則置版本號爲繼續比較。代碼如下:
public class Solution {
public int compareVersion(String version1, String version2) {
// 解析出數字的起始和終點下標
int i = 0, j = 0;
while (i < version1.length() || j < version2.length()) {
int u = i, v = j;
while (u < version1.length() && version1.charAt(u) != '.') {
u++;
}
while (v < version2.length() && version2.charAt(v) != '.') {
v++;
}
// 先初始化兩個版本號爲0,如果未遍歷到末尾則解析出數字並賦值
int a = 0, b = 0;
if (u != i) {
a = Integer.parseInt(version1.substring(i, u));
}
if (v != j) {
b = Integer.parseInt(version2.substring(j, v));
}
if (a != b) {
return Integer.compare(a, b);
}
i = u + 1;
j = v + 1;
}
return 0;
}
}
時間複雜度,空間。