題目出處
2273. Find Resultant Array After Removing Anagrams
難度
easy
個人範例程式碼
class Solution:
def removeAnagrams(self, words: List[str]) -> List[str]:
if not words:
return words
i = 0
last_word = ""
while(i < len(words)):
sort_word = "".join(sorted(words[i]))
if sort_word == last_word:
words.pop(i) # remove, and keep i
else:
last_word = sort_word
i += 1 # go next
return words
最近在練習程式碼本身就可以自解釋的 Coding style,可以嘗試直接閱讀程式碼理解
算法說明
讓我們先來理解題目,題目的意思簡單說就是,
我們將每個字都取 counter,如果前後 counter 相同,那我們就去把後面的刪除,
這邊要「特別注意」,題目只有說「前後」,因此「相隔很多的不用刪」,
input handling
如果沒有 input words,return words
Boundary conditions
for loop 控制範圍
特別注意,當 list remove 時,index 要繼續使用原來的 (因為原來位置被刪除,後面補前面)