Re: [閒聊] 每日leetcode

看板Marginalman作者 (caster )時間1年前 (2024/05/03 11:59), 編輯推噓3(301)
留言4則, 4人參與, 1年前最新討論串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
文章代碼(AID): #1cD64t-X (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1cD64t-X (Marginalman)