Даны две строки s
и t
Bерните true
, если t
является анаграммой s
, и false
в противном случае.
Анаграмма – это слово или фраза, образованные путем перестановки букв другого слова или фразы, обычно используя все исходные буквы ровно один раз.
Входные данные: s = “anagram”, t = “nagaram”
Результат: true
Входные данные: 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;
}
};