본 내용은 <파이썬 알고리즘 인터뷰>를 참고했습니다.
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
anagram = collections.defaultdict(list)
for word in strs:
anagram[''.join(sorted(word))].append(word)
return anagram.values()
이 문제에서 배워야할 포인트
for word in strs:
anagram[''.join(sorted(word))].append(word)
-
정렬하여 딕셔너리에 추가
-
key: sorted(word), value: word
-
만약 존재하지 않는 키를 삽입하려 할 경우 KeyError가 발생하므로 defaultdict()로 구현한다.
-
sort() 메소드는 리스트 자체를 정렬하며, 입력을 출력으로 덮어쓰기 때문에 별도의 추가 공간이 필요하지 않으며, 리턴 값이 없다.
-
sorted()는 또한 key= 옵션을 지정할 수 있다.
c = ['ccc', 'aaaa', 'd', 'bb'] sorted(c, key=len) a = ['cde', 'cfc', 'abc'] sorted(a, key=lambda s: (s[0],s[-1]))
-
'프로그래머 > Python' 카테고리의 다른 글
[Python] Leet Code 1. Two Sum (2) | 2021.02.13 |
---|---|
[Python] Leet Code 5. Longest Palindromic Substring (0) | 2021.02.13 |
[Python] Leet Code 819 : Most Common Word (0) | 2021.02.12 |
[Python] Leet Code 937 : Reorder Log Files 풀이 및 분석 (0) | 2021.02.03 |
[Python] Leet Code 344 : Reverse String 풀이 및 분석 (0) | 2021.02.03 |