#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 比较版本号
# @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