一:题目 二:上码 1:方法一(map解法) class Solution { public:bool isAnagram(string s, string t) {/**思路:1.分析题意,这个是要判断t中的字符出现次数和s中字符出现的次数相同2.可以用map<char,int>来做*/map<char,int>m1,m2;map<char,int>:: iterator mt1;map<char,int>:: iterator mt2;for(int i = 0; i < s.size(); i++) {m1[s[i]]++;}for(int i = 0; i < t.size(); i++){m2[t[i]]++;}if(m1.size() == m2.size()){int count = 0;for(mt1 = m1.begin(),mt2 = m2.begin(); mt1 != m1.end(),mt2 != m2.end();mt1++,mt2++){if(mt1->second == mt2->second && mt1->first == mt2->first){count++;}}if(count == m1.size()){return true;} }return false;} }; 2:方法二(哈希表 数组) class Solution { public:bool isAnagram(string s, string t) {/**思路:1.分析题意,这个是要判断t中的字符出现次数和s中字符出现的次数相同2.判断一个元素是否出现过的场景也应该第一时间想到哈希法,本题中我们是来判断t中的元素是否在s中出现过3.这里我们选用一个数组array[26] 来当作哈希表,小写字母[a.z]在数组中的下标范围为[0.25]4.我们先统计s中字符的在array[26]中对应下标出现的个数,然后我们再遍历t中字符在array中出现了就将其下标对应的个数减一,那么最后看看数组最后的每个值是否均为0,如果都为0,那么我们就可以返回true; */int array[26] = {0};for(int i = 0; i < s.size(); i++){array[s[i] - 'a']++;}for(int j = 0; j < t.size(); j++){array[t[j]-'a']--;}for(int i = 0; i < 26; i++){if(array[i] != 0){return false;}}return true;} };