假设我们必须比较两个版本号version1和version2。如果version1> version2,则返回1;否则,返回1。否则,当version1 <version2返回-1时;否则返回0。我们可以假定版本字符串为非空,并且仅包含数字和点(。)字符。点字符不代表小数点,用于分隔数字序列。因此,例如2.5不是“两个半”或“版本三的一半”,它是第二个第一级修订版的第五个第二级修订版。
我们可以假定版本号的每个级别的默认修订号为0。例如,版本号3.4的第一级和第二级修订号的修订号分别为3和4。其第三级和第四级修订号均为0。
因此,如果输入类似于version1 =“ 1.0.1”和version2 =“ 1”,则它将返回+1。
为了解决这个问题,我们将遵循以下步骤-
version1_arr =版本1的数字数组,用点分隔
version2_arr =版本2的数字数组,用点号分隔
对于范围在0到version1_arr的最大值和version2_arr的最大值的范围内的i-
v1:= version1_arr [i],如果i <version1_arr的大小,否则为0
v2:= version2_arr [i],如果i <version2_arr的大小,否则为0
如果v1> v2,则返回1,否则,当v1 <v2时,返回-1
返回0
让我们看下面的实现以更好地理解-
class Solution: def compareVersion(self, version1, version2): versions1 = [int(v) for v in version1.split(".")] versions2 = [int(v) for v in version2.split(".")] for i in range(max(len(versions1),len(versions2))): v1 = versions1[i] if i < len(versions1) else 0 v2 = versions2[i] if i < len(versions2) else 0 if v1 > v2: return 1 elif v1 <v2: return -1 return 0 ob1 = Solution()print(ob1.compareVersion("1.0.1","1.0"))
"1.0.1" "1.0"
输出结果
1