题解 | #比较版本号#

比较版本号

https://www.nowcoder.com/practice/2b317e02f14247a49ffdbdba315459e7

package main

import (
	"strconv"
)

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 比较版本号
 * @param version1 string字符串
 * @param version2 string字符串
 * @return int整型
 */
func compare(version1 string, version2 string) int {
	// write code here
	r1 := []rune(version1)
	r2 := []rune(version2)
	l1 := len(r1)
	l2 := len(r2)
	var i, j int
	for i, j = 0, 0; ; {
		if i < l1 || j < l2 {
			var num1 int64 = 0
			for {
				if i < l1 && string(r1[i]) != "." {
					node, _ := strconv.ParseInt(string(r1[i]), 10, 64)
					num1 = num1*10 + node
                    i++
				}else {
                    i++
					break
                  
				}
			}
			var num2 int64 = 0
			for {
				if j < l2 && string(r2[j]) != "." {
					node, _ := strconv.ParseInt(string(r2[j]), 10, 64)
					num2 = num2*10 + node
                    j++
				}else {
                    j++
					break
				}
			}
			if num1 > num2 {
				return 1
			} else if num1 < num2 {
				return -1
			}
		} else {
			return 0
		}
	}
}

全部评论
虽然写着二分的标题,但是还是双指针舒服,就是GOLANG 不支持WHILE 真难受
点赞 回复 分享
发布于 2023-11-12 19:56 上海

相关推荐

11-24 11:23
门头沟学院 C++
点赞 评论 收藏
分享
09-29 11:19
门头沟学院 Java
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务