leetcode 165. 比较版本号

题解

首先根据 “.” 分割成数组,然后依次比较每一项的值(可以先转为整数再比较,方便一点)

示例代码(go)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
func compareVersion(version1 string, version2 string) int {
arr1 := strings.Split(version1, ".")
arr2 := strings.Split(version2, ".")
m, n := len(arr1), len(arr2)
for i, j := 0, 0 ;i < m || j < n; {
if i < m && j < n {
num1, _ := strconv.Atoi(arr1[i])
num2, _ := strconv.Atoi(arr2[j])
if num1 > num2 {
return 1
}
if num1 < num2 {
return -1
}
i++
j++
} else if i == m && j < n {
num2, _ := strconv.Atoi(arr2[j])
if 0 < num2 {
return -1
}
j++

} else if i < m && j == n {
num1, _ := strconv.Atoi(arr1[i])
if num1 > 0 {
return 1
}
i++
}
}
return 0
}