Написано: 14.03.2023

242. Проверка анаграммы (Valid Anagram)

easy

Задание.

Даны две строки s и t

Bерните true, если t является анаграммой s, и false в противном случае.

Анаграмма – это слово или фраза, образованные путем перестановки букв другого слова или фразы, обычно используя все исходные буквы ровно один раз.

Пример 1.

Входные данные: s = “anagram”, t = “nagaram”

Результат: true

Пример 2.

Входные данные: s = “rat”, t = “car”

Результат: false

Решение.

class Solution {
public:
    bool isAnagram(string s, string t) {
        int len;

        if ((len = s.length()) != (int)t.length()) {
            return false;
        } else if(len == 0) {
            return true;
        }

        map<char, int> freq;
        for (int i = 0; i < len; i++) {
            if(freq.count(s[i]) == 0) {
                freq[ s[i] ] = 1;
            } else {
                freq[ s[i] ]++;
            }
            if(freq.count(t[i]) == 0) {
                freq[ t[i] ] = -1;
            } else {
                freq[ t[i] ]--;
            }
        }

        for (map<char, int>::iterator it = freq.begin(); it != freq.end(); it++) {
            if (it->second != 0) {
                return false;
            }
        }

        return freq.size() > 0;
    }
};