•
문제 링크 : LeetCodeValid Anagram - LeetCode
•
문제 설명 : 제공된 두 문자열이 동일한 알파벳을 동일한 횟수로 사용한 문자열인지 반환
•
풀이 방법
◦
처음엔 sorting 문제로 확인했기 때문에, 문자열을 sorting해서 비교하였다.
▪
이 경우 O(NlonN)으로 진행된다.
◦
하지만, 해시테이블을 사용하면 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
복사