Search

Valid Anagram

문제 설명 : 제공된 두 문자열이 동일한 알파벳을 동일한 횟수로 사용한 문자열인지 반환
풀이 방법
처음엔 sorting 문제로 확인했기 때문에, 문자열을 sorting해서 비교하였다.
이 경우 O(NlonN)으로 진행된다.
하지만, 해시테이블을 사용하면 O(N)으로 풀 수 있어 해당 방식으로 진행했다.
시간복잡도 : O(N)O(N)
성공 코드
from collections import Counter class Solution: def isAnagram(self, s: str, t: str) -> bool: s_info = defaultdict(int) t_info = defaultdict(int) keys = set() for ch in s: s_info[ch] += 1 keys.add(ch) for ch in t: t_info[ch] += 1 keys.add(ch) # 각 문자의 사용 갯수가 다른 문자열이면 바로 False for k in keys: if s_info[k] != t_info[k]: return False return True
Python
복사
Sorting을 사용한 코드
시간 복잡도는 더 오래걸리지만, 공간 복잡도 부분에서는 해시테이블 방식보다 더 좋을 것 이다.
from collections import Counter class Solution: def isAnagram(self, s: str, t: str) -> bool: return sorted(s) == sorted(t)
Python
복사