Re: [閒聊] 每日leetcode

看板Marginalman作者 (單推凜寶)時間10月前 (2025/02/05 16:02), 編輯推噓1(102)
留言3則, 2人參與, 10月前最新討論串1323/1552 (看更多)
題目: 有兩個字串a跟b 我們要檢查a在交換最多1個字元後會不會跟b相同 思路: 先檢查a b有幾個字元不一樣 因為不一樣的字元數是0或2才有可能交換後兩個字串相等 如果是0兩個就一樣了不用再檢查 是2的話就看a b不一樣的這兩個字元是不是剛好可以湊成兩對 看有沒有條件都滿足就是答案了 Code: class Solution(object): def areAlmostEqual(self, s1, s2): num=0 a,b=set(),set() for i in range(len(s1)): if s1[i]!=s2[i]: num+=1 a.add(s1[i]) b.add(s2[i]) if num>2: break return num!=1 and a==b code寫得超醜 好像根本不用用set 肥肥就這樣了 -- https://i.imgur.com/P179G56.jpeg
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.10.17.83 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1738742537.A.0BD.html

02/05 16:18, 10月前 , 1F
不用ㄇ?這題我有在想空間複雜度能不能壓到1
02/05 16:18, 1F

02/05 16:31, 10月前 , 2F
想辦法把不一樣那兩個位置記起來假設是i j
02/05 16:31, 2F

02/05 16:31, 10月前 , 3F
之後檢查s1[i]是不是等於s2[j]應該就行了
02/05 16:31, 3F
文章代碼(AID): #1deni92z (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1deni92z (Marginalman)