242. Valid Anagram
Total Accepted: 74033 Total Submissions: 178179 Difficulty: Easy
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.
【分析】
鉴于此题的特殊性,我们可采用类似“哈希表”的思想来解决这个问题,如果一个字符串是另一个字符串的重排(Angram),那么,这两个字符串长度必定相等,所包含字符必定完全相同(仅仅顺序可能不同),如是,我们可以以小写字母的ASCII码为键值,建立一个“哈希表”,具体操作中:用一个长度为26(26个小写字母)的整型数组存放对应26个字母在其中一个字符串中出现的次数,设数组下标为key,字符为i,哈希函数为:key=f(i)=i-'a';
*/
【解法】
class Solution {
public:
bool isAnagram(string s, string t) {
if(s.size()!=t.size())return false;
if(s.size()==0&&t.size()==0)return true;
int Sum[26]={0,0,0};
for(int i=0;i<s.size();i++)
Sum[s[i]-'a']++;
for(int j=0;j<t.size();j++)
Sum[t[j]-'a']--;
for(int j=0;j<26;j++)
if(Sum[j]!=0)return false;
return true;
}
};