题解 | #比较版本号#
比较版本号
https://www.nowcoder.com/practice/2b317e02f14247a49ffdbdba315459e7
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # 比较版本号 # @param version1 string字符串 # @param version2 string字符串 # @return int整型 # class Solution: def compare(self , version1: str, version2: str) -> int: version1, version2 = version1+".", version2+"." v1_n, v2_n = len(version1), len(version2) min_l, max_l = min(v2_n, v1_n), max(v1_n, v2_n) v1_ints, v2_ints = [], [] v1_tmp, v2_tmp = 0, 0 for i in range(min_l): if version1[i] != ".": v1_tmp = (v1_tmp * 10) + int(version1[i]) else: v1_ints.append(v1_tmp) v1_tmp = 0 if version2[i] != ".": v2_tmp = (v2_tmp * 10) + int(version2[i]) else: v2_ints.append(v2_tmp) v2_tmp = 0 no_comp = version1 if v1_n > v2_n else version2 ints = v1_ints if v1_n > v2_n else v2_ints tmp = v1_tmp if v1_n > v2_n else v2_tmp for i in range(min_l, max_l): if no_comp[i] != ".": tmp = (tmp * 10) + int(no_comp[i]) else: ints.append(tmp) tmp = 0 ret = 0 v1_n, v2_n = len(v1_ints), len(v2_ints) for i in range(min(v1_n, v2_n)): if v1_ints[i] < v2_ints[i]: ret = -1 break elif v1_ints[i] > v2_ints[i]: ret = 1 break if ret == 0: if v1_n == v2_n: pass elif v1_n > v2_n: ret = 1 if v1_ints[-1] != 0 else 0 else: ret = -1 if v2_ints[-1] != 0 else 0 return ret