作者Meaverzt (單推凜寶)
看板Marginalman
標題Re: [閒聊] 每日leetcode
時間Wed Feb 5 16:02:15 2025
題目:
有兩個字串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
推 sustainer123: 不用ㄇ?這題我有在想空間複雜度能不能壓到1 02/05 16:18
→ Meaverzt: 想辦法把不一樣那兩個位置記起來假設是i j 02/05 16:31
→ Meaverzt: 之後檢查s1[i]是不是等於s2[j]應該就行了 02/05 16:31