牛客网: BM22
题目: 字符串以'.'连接,从左到右编号,比较版本号大小
思路: 按'.'切割为字符串数组,双指针p1, p2均初始化为坐标0, 将p1与 p2指向部分转为数字进行比较,如果为空则默认为0不从数组中取字符串,直到p1与p2都达到数组末尾停止。
代码:
// go
package main
// import "fmt"
import "strings"
import "strconv"
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 比较版本号
* @param version1 string字符串
* @param version2 string字符串
* @return int整型
*/
func compare( version1 string , version2 string ) int {
// write code here
v1 := strings.Split(version1, ".")
v2 := strings.Split(version2, ".")
i, j := 0, 0
for ; i < len(v1) || j < len(v2); i,j = i+1, j+1 {
ver1 := 0
ver2 := 0
if i < len(v1) {
v, _ := strconv.Atoi(v1[i])
ver1 += v
}
if j < len(v2) {
v, _ := strconv.Atoi(v2[i])
ver2 += v
}
if ver1 > ver2 {
return 1
} else if ver1 < ver2 {
return -1
}
}
if i < len(v1) {
return 1
} else if j < len(v2) {
return -1
} else {
return 0
}
}