From b805e692752ded03241e2f000da61f9760901f57 Mon Sep 17 00:00:00 2001 From: Jack Sangdahl Date: Mon, 22 Sep 2025 20:24:54 -0600 Subject: 165. compare version numbers --- compare_version_num.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) (limited to 'compare_version_num.py') diff --git a/compare_version_num.py b/compare_version_num.py index fe8616b..9df14ff 100644 --- a/compare_version_num.py +++ b/compare_version_num.py @@ -18,15 +18,25 @@ class Solution(object): :type version2: str :rtype: int """ - n1 = [int(v) for v in version1.split(".")] - n2 = [int(v) for v in version2.split(".")] - for i in range(max(len(n1), len(n2))): - v1 = n1[i] if i < len(n1) else 0 - v2 = n2[i] if i < len(n2) else 0 - if v1 > v2: + i, j, num1, num2 = 0, 0, 0, 0 + n, m = len(version1), len(version2) + while i < n or j < m: + while i < n and version1[i] != ".": + num1 = num1 * 10 + (ord(version1[i]) - ord("0")) + i += 1 + while j < m and version2[j] != ".": + num2 = num2 * 10 + (ord(version2[j]) - ord("0")) + j += 1 + if num1 > num2: return 1 - elif v1 < v2: + elif num1 < num2: return -1 + num1 = 0 + num2 = 0 + if i < n: + i += 1 + if j < m: + j += 1 return 0 -- cgit v1.2.3