Easyhashanagram
Решить задачу Valid Anagram (LeetCode 242)?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
LeetCode 242. Являются ли две строки анаграммами (одинаковые буквы в разном порядке). Counter — самый выразительный, O(n).
# Counter (hash map)
from collections import Counter
def isAnagram(s, t):
return Counter(s) == Counter(t)
# Array counter для известного алфавита — O(n), O(1) space
def isAnagram(s, t):
if len(s) != len(t):
return False
count = [0] * 26
for c in s: count[ord(c) - ord('a')] += 1
for c in t: count[ord(c) - ord('a')] -= 1
return all(x == 0 for x in count)
# Sort and compare — O(n log n)
def isAnagram(s, t):
return sorted(s) == sorted(t)Связанные: Group Anagrams (LeetCode 49) — sorted tuple как key. Find All Anagrams in a String (LeetCode 438) — sliding window с counter.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.