[
anagram
counter
sliding window
]
BinarySearch 0077 Anagram Partitioning
Problem statement
https://binarysearch.com/problems/Anagram-Partitioning/
Solution
Go element by element and keep in counter difference of frequencies for each letter. Also keep total
is number of values which are not equal to 0
.
Complexity
It is O(n)
for time and O(26)
for space.
Code
class Solution:
def solve(self, a, b):
n = len(a)
cnt, total, ans = Counter(), 0, []
for i in range(n):
if total == 0:
ans += [i]
cnt[a[i]] += 1
if cnt[a[i]] == 1: total += 1
cnt[b[i]] -= 1
if cnt[b[i]] == 0: total -= 1
return ans if Counter(a) == Counter(b) else []