leetcode | Задача: 242. Valid Anagram (Массивы и хеширование, №1)
Условие:
Учитывая две строки s и t, верните, true если t является анаграммой s, и false в противном случае .
Анаграмма — это слово или фраза, образованная перестановкой букв другого слова или фразы, обычно с использованием всех исходных букв ровно один раз.
Example 2:
Input: s = "anagram", t = "nagaram"
Output: true
Example 2:
Input: s = "rat", t = "car"
Output: false
Что такое анаграмма
Анаграмма - это перестановка или переставленное слово, полученное путем перемещения букв и составляющее другое слово или фразу. Например, анаграммой слова «кот» может быть слово «ток», анаграммой фразы «слушай» может быть фраза «сушила». Анаграммы используются в различных играх и головоломках, также могут быть применены в криптографии и литературе для создания эффекта или скрытого значения. Анаграммы - увлекательный способ играть с языком и проверять свою лексическую ловкость.
Решение 1
Давай разберем подробно решение задачи по строке кода.
1. `class Solution:` - это объявление класса Solution.
2. `def isAnagram(self, s: str, t: str) -> bool:` - это объявление метода isAnagram, который принимает две строки s и t в качестве параметров и возвращает логическое значение (True или False).
3. `if len(s) != len(t):` - это проверка на длину строк s и t. Если длины строк не равны, то возвращается значение False, так как слова не могут быть анаграммами друг друга.
4. `countS, countT = {}, {}` - это инициализация двух пустых словарей countS и countT.
5. `for i in range(len(s)):` - цикл, который проходит по всем индексам символов в строке s.
6. `countS[s[i]] = 1 + countS.get(s[i], 0)` - в данной строке используется метод get() для получения значения из словаря countS. Если символ s[i] уже есть в словаре, то значение увеличивается на 1, а если символа нет в словаре, то возвращается значение 0 и к нему прибавляется 1.
7. `countT[t[i]] = 1 + countT.get(t[i], 0)` - аналогично предыдущей строке, только для словаря countT.
8. `for c in countS:` - цикл, который проходит по всем ключам словаря countS.
9. `if countS[c] != countT.get(c, 0):` - в данной строке сравниваются значения для ключа c в словарях countS и countT. Если значения не совпадают, то возвращается значение False, так как это означает, что символы в строках s и t не распределены одинаково и не являются анаграммами.
10. `return True` - если все символы распределены одинаково, то возвращается значение True, так как строки являются анаграммами.