func compareVersion(version1, version2 string) int {
v1 := strings.Split(version1, ".")
v2 := strings.Split(version2, ".")
for i := 0; i < len(v1) || i < len(v2); i++ {
x, y := 0, 0
if i < len(v1) {
x, _ = strconv.Atoi(v1[i])
}
if i < len(v2) {
y, _ = strconv.Atoi(v2[i])
}
if x > y {
return 1
}
if x < y {
return -1
}
}
return 0
}
双指针
使用双指针,我最开始还想着其他很屎山的做法,看了官方的才发现,哇撒,这么优雅。
func compareVersion(version1 string, version2 string) int {
n, m := len(version1), len(version2)
i, j := 0, 0
for i < n || j < m {
x, y := 0, 0
for i < n && version1[i] != '.' {
x = x*10 + int(version1[i] - '0')
i ++
}
i++
for j < m && version2[j] != '.' {
y = y*10 + int(version2[j] - '0')
j ++
}
j ++
if x > y {
return 1
}
if x < y {
return -1
}
}
return 0
}