#
# [165] Compare Version Numbers
#
# https://leetcode.com/problems/compare-version-numbers/description/
#
# algorithms
# Medium (21.11%)
# Total Accepted:    107.3K
# Total Submissions: 503.6K
# Testcase Example:  '"0.1"\n"1.1"'
#
# Compare two version numbers version1 and version2.
# If version1 > version2 return 1; if version1 < version2 return -1;otherwise
# return 0.
# 
# You may assume that the version strings are non-empty and contain only digits
# and the . character.
# The . character does not represent a decimal point and is used to separate
# number sequences.
# For instance, 2.5 is not "two and a half" or "half way to version three", it
# is the fifth second-level revision of the second first-level revision.
# 
# Example 1:
# 
# 
# Input: version1 = "0.1", version2 = "1.1"
# Output: -1
# 
# Example 2:
# 
# 
# Input: version1 = "1.0.1", version2 = "1"
# Output: 1
# 
# Example 3:
# 
# 
# Input: version1 = "7.5.2.4", version2 = "7.5.3"
# Output: -1
# 
#
class Solution:
    def compareVersion(self, version1, version2):
        """
        :type version1: str
        :type version2: str
        :rtype: int
        """
        # i = 0
        # while i < len(version1) and version1[i] == "0":
        #     i += 1
        # version1 = version1[i:]
        # i = 0
        # while i < len(version2) and version2[i] == "0":
        #     i += 1
        # version2 = version2[i:]
        # version1.replace(".0", ".")
        # version2.replace(".0", ".")
        if version1 == version2:
            return 0
        digit_version1 = version1.split('.')
        digit_version2 = version2.split('.')
        i = len(digit_version1) - 1
        while i >= 0 and int(digit_version1[i]) == 0:
            i -= 1
        digit_version1 = digit_version1[:i + 1]
        i = len(digit_version2) - 1
        while i >= 0 and int(digit_version2[i]) == 0:
            i -= 1
        digit_version2 = digit_version2[:i + 1]
        for i in range(min(len(digit_version1), len(digit_version2))):
            if int(digit_version1[i]) > int(digit_version2[i]):
                return 1
            elif int(digit_version1[i]) < int(digit_version2[i]):
                return -1
            else:
                continue
        if len(digit_version1) > len(digit_version2):
            return 1
        elif len(digit_version1) < len(digit_version2):
            return -1
        else:
            return 0
        
