Re: [閒聊] 每日leetcode
看板Marginalman作者sustainer123 (caster )時間1年前 (2024/05/03 11:59)推噓3(3推 0噓 1→)留言4則, 4人參與討論串179/1548 (看更多)
※ 引述《Rushia (早瀬ユウカの体操服 )》之銘言:
: https://leetcode.com/problems/compare-version-numbers/description
: 165. Compare Version Numbers
: 給你兩個表示版本的字串,求出哪個版本比較大
: If version1 < version2, return -1.
: If version1 > version2, return 1.
: Otherwise, return 0.
: 版本以 . 分隔,你可以忽略 0 開頭的版本號 ,也就是0001 和 1 相等。
: 思路:
: 1.用函數把版本依據 . 分成好幾組,每組轉成 int 比較大小,如果不相等就返回。
: 2.如果比完之後還有沒檢查的版本字串,該版本如果遇到大於0一定比較大,否則返回0。
: py code:
: ----------------------------
: class Solution:
: def compareVersion(self, version1: str, version2: str) -> int:
: d1 = version1.split('.')
: d2 = version2.split('.')
: l, r = 0, 0
: while l < len(d1) and r < len(d2):
: if int(d1[l]) > int(d2[r]):
: return 1
: elif int(d1[l]) < int(d2[r]):
: return -1
: l += 1
: r += 1
: while l < len(d1):
: if int(d1[l]) > 0:
: return 1
: l += 1
: while r < len(d2):
: if int(d2[r]) > 0:
: return -1
: r += 1
: return 0
: ----------------------------
思路:
想法差不多 不過我先補0
Python Code:
class Solution:
def compareVersion(self, version1: str, version2: str) -> int:
s1 = version1.split(".")
s2 = version2.split(".")
l1, l2 = len(s1), len(s2)
if l1 < l2:
s1 += ["0"] * (l2 - l1)
elif l1 > l2:
s2 += ["0"] * (l1 - l2)
for i in range(len(s1)):
if int(s1[i]) > int(s2[i]):
return 1
elif int(s1[i]) < int(s2[i]):
return -1
return 0
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.43.137.123 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1714708791.A.FA1.html
→
05/03 12:01,
1年前
, 1F
05/03 12:01, 1F
推
05/03 12:01,
1年前
, 2F
05/03 12:01, 2F
推
05/03 12:11,
1年前
, 3F
05/03 12:11, 3F
推
05/03 12:12,
1年前
, 4F
05/03 12:12, 4F
討論串 (同標題文章)