给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。(出现的相同字母次数相同)
输入: s = "anagram", t = "nagaram"输出: true
c plus
排序法
class Solution {public:bool isAnagram(string s, string t) {if (s.size() != t.size()) return false;sort(s.begin(), s.end());sort(t.begin(), t.end());return s == t;}};
哈希
class Solution {public:bool isAnagram(string s, string t) {if (s.size() != t.size()) return false;char array[26];memset(array, 0, 26);for (int i = 0; i < s.size(); i++) {array[s[i] % 26]++;}for (int i = 0; i < t.size(); i++) {array[t[i] % 26]--;}for (int i = 0; i < 26; i++) {if (array[i] != 0) return false;}return true;}};//上面写的有点啰嗦,改一下:class Solution {public:bool isAnagram(string s, string t) {if (s.size() != t.size()) return false;int n = s.size();char array[26];memset(array, 0, 26);for (int i = 0; i < n; i++) {array[s[i] - 'a']++;array[t[i] - 'a']--;}for (int i = 0; i < 26; i++) {if (array[i] != 0) return false;}return true;}};
%E7%BB%99%E5%AE%9A%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%20s%20%E5%92%8C%20t%20%EF%BC%8C%E7%BC%96%E5%86%99%E4%B8%80%E4%B8%AA%E5%87%BD%E6%95%B0%E6%9D%A5%E5%88%A4%E6%96%AD%20t%20%E6%98%AF%E5%90%A6%E6%98%AF%20s%20%E7%9A%84%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D%E3%80%82(%E5%87%BA%E7%8E%B0%E7%9A%84%E7%9B%B8%E5%90%8C%E5%AD%97%E6%AF%8D%E6%AC%A1%E6%95%B0%E7%9B%B8%E5%90%8C)%0A%60%60%60%0A%E8%BE%93%E5%85%A5%3A%20s%20%3D%20%22anagram%22%2C%20t%20%3D%20%22nagaram%22%0A%E8%BE%93%E5%87%BA%3A%20true%0A%60%60%60%0A%0A%23%23%23%20c%20plus%20%0A%0A%0A%20%E6%8E%92%E5%BA%8F%E6%B3%95%0A%60%60%60c%0Aclass%20Solution%20%7B%0Apublic%3A%0A%20%20%20%20%20%20%20bool%20isAnagram(string%20s%2C%20string%20t)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(s.size()%20!%3D%20t.size())%20return%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20sort(s.begin()%2C%20s.end())%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20sort(t.begin()%2C%20t.end())%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20s%20%3D%3D%20t%3B%0A%20%20%20%20%20%20%20%7D%0A%20%7D%3B%0A%0A%60%60%60%0A%0A%20%E5%93%88%E5%B8%8C%0A%0A%60%60%60c%0Aclass%20Solution%20%7B%0Apublic%3A%0A%20%20%20%20bool%20isAnagram(string%20s%2C%20string%20t)%20%7B%0A%20%20%20%20%20%20%20%20if%20(s.size()%20!%3D%20t.size())%20return%20false%3B%0A%0A%20%20%20%20%20%20%20%20char%20array%5B26%5D%3B%0A%20%20%20%20%20%20%20%20memset(array%2C%200%2C%2026)%3B%0A%0A%20%20%20%20%20%20%20%20for%20(int%20i%20%3D%200%3B%20i%20%3C%20s.size()%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20array%5Bs%5Bi%5D%20%25%2026%5D%2B%2B%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20for%20(int%20i%20%3D%200%3B%20i%20%3C%20t.size()%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20array%5Bt%5Bi%5D%20%25%2026%5D—%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20for%20(int%20i%20%3D%200%3B%20i%20%3C%2026%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(array%5Bi%5D%20!%3D%200)%20%20return%20false%3B%20%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%7D%0A%7D%3B%0A%0A%2F%2F%E4%B8%8A%E9%9D%A2%E5%86%99%E7%9A%84%E6%9C%89%E7%82%B9%E5%95%B0%E5%97%A6%EF%BC%8C%E6%94%B9%E4%B8%80%E4%B8%8B%EF%BC%9A%0Aclass%20Solution%20%7B%0Apublic%3A%0A%20%20%20%20bool%20isAnagram(string%20s%2C%20string%20t)%20%7B%0A%20%20%20%20%20%20%20%20if%20(s.size()%20!%3D%20t.size())%20return%20false%3B%0A%20%20%20%20%20%20%20%20int%20n%20%3D%20s.size()%3B%0A%20%20%20%20%20%20%20%20char%20array%5B26%5D%3B%0A%20%20%20%20%20%20%20%20memset(array%2C%200%2C%2026)%3B%0A%20%20%20%20%20%20%20%20for%20(int%20i%20%3D%200%3B%20i%20%3C%20n%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20array%5Bs%5Bi%5D%20-%20’a’%5D%2B%2B%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20array%5Bt%5Bi%5D%20-%20’a’%5D—%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20for%20(int%20i%20%3D%200%3B%20i%20%3C%2026%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(array%5Bi%5D%20!%3D%200)%20%20return%20false%3B%20%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%7D%0A%7D%3B%0A%0A%60%60%60%0A%0A
