牛客网: 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
- }
-
- }