https://www.nowcoder.com/exam/oj?page=1&tab=%E7%AE%97%E6%B3%95%E7%AF%87&topicId=295
解法1. 先将字符串中的每个修订号保存到数组里,再依次比较。 空间复杂度O(n) 时间复杂度O(n)
package main
import "strconv"
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 比较版本号
* @param version1 string字符串
* @param version2 string字符串
* @return int整型
*/
// 字符串转换为数字数组
func stringToArray(version string) []int {
str := ""
result := make([]int, 0, len(version))
for _, c := range version {
if c == '.' {
tmp, _ := strconv.Atoi(str)
result = append(result, tmp)
str = ""
continue
} else {
str = str + string(c)
}
}
if str != "" {
tmp, _ := strconv.Atoi(str)
result = append(result, tmp)
}
return result
}
func compare( version1 string , version2 string ) int {
// write code here
arr1 := stringToArray(version1)
arr2 := stringToArray(version2)
for i:=0;i<len(arr1)&&i<len(arr2);i++{
if(arr1[i] > arr2[i]){
return 1
}
if(arr1[i] < arr2[i]){
return -1
}
}
if len(arr1) > len(arr2){
return 1
}
if len(arr2) > len(arr2){
return -1
}
return 0
}
进阶: 空间复杂度 O(1), 时间复杂度 O(n)
package main
import "strconv"
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 比较版本号
* @param version1 string字符串
* @param version2 string字符串
* @return int整型
*/
func compare( version1 string , version2 string ) int {
// write code here
i,j:=0,0
stri,strj := "",""
var tmpi,tmpj int
for;i<len(version1) || j<len(version2);{
for i<len(version1) && version1[i] != '.'{
stri = stri+ string(version1[i])
i++
}
for j<len(version2) && version2[j] != '.'{
strj = strj + string(version2[j])
j++
}
if stri != ""{
tmpi,_ = strconv.Atoi(stri)
}
if strj != ""{
tmpj,_ = strconv.Atoi(strj)
}
if tmpi > tmpj{
return 1
}
if tmpi < tmpj{
return -1
}
i++
j++
stri = ""
strj = ""
tmpi = 0
tmpj = 0
}
return 0
}