二级域名查询网站,义乌小程序开发,北京网站建设好,wordpress3教程文章目录 Golang 处理字符串与整型数值相互转换的最佳实践LeetCode 165. 比较版本号思路Golang 代码 Golang 处理字符串与整型数值相互转换的最佳实践
今天刷题的时候碰到了 「LeetCode 165. 比较版本号」问题#xff0c;最开始我的处理方式与在 C 当中一样#xff0c;使用.… 文章目录 Golang 处理字符串与整型数值相互转换的最佳实践LeetCode 165. 比较版本号思路Golang 代码 Golang 处理字符串与整型数值相互转换的最佳实践
今天刷题的时候碰到了 「LeetCode 165. 比较版本号」问题最开始我的处理方式与在 C 当中一样使用.作为分隔符分段将每一个子字符串转换为整型数值但后来发现 Golang 提供了 strings 和 strconv 两个库函数可以帮助我们实现类似于 Python 的字符串处理与字符串与整型相互转换的体验。下面我们以这道题目为例进行实践。
LeetCode 165. 比较版本号 思路
就像刚才我提到的最开始我的思路就是手动地将.作为分隔符来完成字符串version的分割我甚至实现了一个将version字符串转为 slice 的函数
func version2Slice(version string) []int {values : []int{}bytes : []byte(version)currVal : 0for i : 0; i len(bytes); i {if i len(bytes) || bytes[i] . {values append(values, currVal)currVal 0} else {if currVal 0 bytes[i] 0 {continue} else {currVal currVal * 10currVal int(bytes[i] - 0)}}}return values
}基于这个函数再将长度不同的 slice 用0补齐即可完成版本号的比较但是这样手工实现起来非常的麻烦在 Golang 当中解这道题的最佳实践是直接使用库函数strings和strconv。strings当中提供了split方法可以让我们根据提供的分割符将字符串转为[]string序列。然后直接使用strconv的Atoi就可以将字符串转为相应的整型数值。
Golang 代码
func compareVersion(version1 string, version2 string) int {v1 : strings.Split(version1, .)v2 : strings.Split(version2, .)for i : 0; i len(v1) || i len(v2); i {x, y : 0, 0if 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
}