# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # 比较版本号 # @param version1 string字符串 # @param version2 string字符串 # @return int整型 # class Solution: def compare1(self , version1: str, version2: str) -> int: # write code here if not version1 and version2: return -1 if version1 and not version2: return 1 if version1 ==version2: return 0 v1 =version1.split(".") v2=version2.split(".") for i in range(len(v1)): if v1[i]=='0': continue temp=v1[i].lstrip("0") # 去除前导0 if temp: v1[i]=temp for i in range(len(v2)): if v2[i]=='0' : continue temp=v2[i].lstrip("0") if temp: v2[i]=temp print(v1,v2) left =0 right=0 v1_len=len(v1) v2_len=len(v2) while left< v1_len or right<v2_len: if left <v1_len and right<v2_len: left_value=int(v1[left]) right_value=int(v2[right]) if left_value>right_value: return 1 elif left_value<right_value: return -1 else: left+=1 right+=1 continue elif left>=v1_len and right<v2_len and int(v2[right])>0: # "1.0" 与1.0.0” 相等 return -1 elif left<v1_len and right>=v2_len and int(v1[left])>0: return 1 left+=1 right+=1 return 0 """ 如果版本号没有指定修订号为0 leetcode 165 官方 双指针 1.设置两个 变量 i,j 分别用与遍历version1 ,version2 2.外层 ;循环遍历两个字符串i <len(verison1) or j<len(version2) 2.1.设置 version1 的统计 x 设置version2 为y 2.2 循环version1 一个修改号 x 累加 数字 遇到".” 结束 i++,指向下一个修改号 2.3 循环version2 一个修改号 y 累加数字遇到“.” 结束 j++ 指向下一个修改号 2.4 判断 x与y 是否相等 不相等 x>y 返回1 ,x<y 返回-1 2.5 x==y 继续比较 """ def compare(self , version1: str, version2: str) -> int: i,j=0,0 n=len(version1) m=len(version2) while i<n or j<m: x=0 while i<n and version1[i]!='.': x=x*10 +ord(version1[i])-ord('0') i+=1 i+=1 #跳过 ‘.’ y=0 while j<m and version2[j]!='.': y=y*10 +ord(version2[j])-ord('0') j+=1 j+=1 if x!=y: if x>y: return 1 if x<y: return -1 return 0