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