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 подскажет развёрнутый ответ в реальном времени.