package main import ( "strconv" "strings" ) /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 比较版本号 * @param version1 string字符串 * @param version2 string字符串 * @return int整型 */ func compare( version1 string , version2 string ) int { // write code here s1 := strings.Split(version1, ".") //按照.号拆分成数组 s2 := strings.Split(version2, ".") i := 0 j := 0 for i < len(s1) && j < len(s2) { // 遍历判断 a, _ := strconv.Atoi(s1[i]) b, _ := strconv.Atoi(s2[j]) if a > b { // 若s1的元素>s2的元素 return 1 } else if a < b { return -1 } else { if i == len(s1)-1 && j == len(s2)-1 { //判断是否是最后一个修订号,若是,说明相等,返回0 return 0 } } i++ j++ } for i < len(s1) { // 判断前面循环结束是否是s2先结束导致的 a, _ := strconv.Atoi(s1[i]) if a > 0 { // 剩余修订号任意找到一个大于0的数,则a>b return 1 } i++ } for j < len(s2) { // 判断前面循环结束是否是s1先结束导致的 b, _ := strconv.Atoi(s2[j]) if b > 0 { // 剩余修订号任意找到一个大于0的数,则a<b return -1 } j++ } return 0 // 按理不可能走到这一步的。。。 }