- 문제 링크: https://leetcode.com/problems/permutation-in-string/
- 난이도: Medium
문자열 s1, s2가 주어질 때, s1을 애너그램한 문자열이 s2에 포함되어 있냐 판단하는 문제다
s1만큼의 window를 만들고, 알파벳 별 숫자를 세서(=histogram) 업데이트한다. s1과 s2 윈도우의 histogram이 일치하면 True. dict는 순서 상관 없이 entry가 같으면 같다.
class Solution:
def checkInclusion(self, s1: str, s2: str) -> bool:
if len(s1) > len(s2):
return False
h1 = defaultdict(int)
for c in s1:
h1[c] += 1
h2 = defaultdict(int)
for i in range(len(s1)):
h2[s2[i]] += 1
if h1 == h2:
return True
for r in range(len(s1), len(s2), 1):
l = r - len(s1)
h2[s2[r]] += 1
h2[s2[l]] -= 1
if h2[s2[l]] == 0:
h2.pop(s2[l])
if h1 == h2:
return True
return False
반응형
'Online Judge > LeetCode' 카테고리의 다른 글
[LeetCode][Python] 21. Merge Two Sorted Lists (0) | 2024.09.11 |
---|---|
[LeetCode][Python] 206. Reverse Linked List (0) | 2024.09.10 |
[LeetCode][Python] 424. Longest Repeating Character Replacement (0) | 2024.09.09 |
[LeetCode][Python] 121. Best Time to Buy and Sell Stock (0) | 2024.09.08 |
[LeetCode][Python] 74. Search a 2D Matrix (0) | 2024.09.08 |