bool isAnagram(string s, string t) {
int n = s.size();
if (t.size() != n) {
return false;
}
int nums1[26], nums2[26];
memset(nums1, 0, sizeof(int) * 26);
memset(nums2, 0, sizeof(int) * 26);
for (int i = 0; i < n; i++) {
nums1[s[i] - 'a']++;
nums2[t[i] - 'a']++;
}
for (int i = 0; i < 26; i++) {
if (nums1[i] != nums2[i]) {
return false;
}
}
return true;
}
2、若字符种类很多,用map
bool isAnagram(string s, string t) {
int n = s.size();
if (t.size() != n) {
return false;
}
map<char, int> m1, m2;
for (int i = 0; i < n; i++) {
m1[s[i]]++;
m2[t[i]]++;
}
if (m1.size() != m2.size()) {
return false;
}
for (auto p : m1) {
if (p.second != m2[p.first])
return false;
}
return true;
}
在map中也可以一个加一个减,就不用开两个map了。