Given two strings s and t, write a function to determine if t is an anagram of s.
For example,
s = "anagram", t = "nagaram", return true.
s = "rat", t = "car", return false.
Note: You may assume the string contains only lowercase alphabets.
- 如果两个字符串长度不一样,返回
false。 - 两个字符串所有出现字符以及数量相同,返回
true。使用hash表首先存储第一个字符串的字符个数,然后遍历第二个字符串,每出现一个字符,对应hash表计数-1,若出现负数,则返回false。
bool isAnagram(char *s, char *t)
{
int len1 = strlen(s), len2 = strlen(t);
if (len1 != len2)
return false;
int table[26] = {0};
for (int i = 0; i < len1; ++i)
table[s[i] - 'a']++;
for (int i = 0; i < len2; ++i) {
if (table[t[i] - 'a'] <= 0)
return false;
table[t[i] - 'a']--;
}
return true;
}