Re: [閒聊] 每日leetcode

看板Marginalman作者 (單推凜寶)時間11月前 (2025/01/04 14:26), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1241/1554 (看更多)
題目: 給定一個字串s 要找出裡面有幾個不同的三個字回文 思路: 從左邊右邊分別找一個字元第一次跟最後一次出現的位置 分別紀錄在兩個字典裡面 再遍歷一次第一個字典 因為三個字的回文最左邊跟最右邊一定一樣 所以只要找出每個left跟right中間有幾種字的總和就是答案了 Python Code: def countPalindromicSubsequence(self,s): dict1,dict2={},{} ans=0 for i,char in enumerate(s): if char not in dict1: dict1[char]=i dict2[char]=i for i in dict1: left,right=dict1[i],dict2[i] ans+=len(set(s[left+1:right])) return ans 結果時間複雜度空間複雜度都一坨 查了一下字串可以直接find rfind找左右第一個出現的 所以直接把一開始的s做成set 然後對set裡面每個元素在s作find跟rfind找到left跟right 再去找left跟right中間有幾個不一樣的數就好 Python Code: def countPalindromicSubsequence(self,s): ans=0 for i in set(s): left,right=s.find(i),s.rfind(i) ans+=len(set(s[left+1:right])) return ans 剩肥肥只會用python了 -- https://i.imgur.com/5XtXJd3.jpeg
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.237.12.28 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1735971988.A.3D4.html
文章代碼(AID): #1dUDIKFK (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1dUDIKFK (Marginalman)