给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。(出现的相同字母次数相同)

  1. 输入: s = "anagram", t = "nagaram"
  2. 输出: true

c plus


  • 排序法

    1. class Solution {
    2. public:
    3. bool isAnagram(string s, string t) {
    4. if (s.size() != t.size()) return false;
    5. sort(s.begin(), s.end());
    6. sort(t.begin(), t.end());
    7. return s == t;
    8. }
    9. };
  • 哈希

    1. class Solution {
    2. public:
    3. bool isAnagram(string s, string t) {
    4. if (s.size() != t.size()) return false;
    5. char array[26];
    6. memset(array, 0, 26);
    7. for (int i = 0; i < s.size(); i++) {
    8. array[s[i] % 26]++;
    9. }
    10. for (int i = 0; i < t.size(); i++) {
    11. array[t[i] % 26]--;
    12. }
    13. for (int i = 0; i < 26; i++) {
    14. if (array[i] != 0) return false;
    15. }
    16. return true;
    17. }
    18. };
    19. //上面写的有点啰嗦,改一下:
    20. class Solution {
    21. public:
    22. bool isAnagram(string s, string t) {
    23. if (s.size() != t.size()) return false;
    24. int n = s.size();
    25. char array[26];
    26. memset(array, 0, 26);
    27. for (int i = 0; i < n; i++) {
    28. array[s[i] - 'a']++;
    29. array[t[i] - 'a']--;
    30. }
    31. for (int i = 0; i < 26; i++) {
    32. if (array[i] != 0) return false;
    33. }
    34. return true;
    35. }
    36. };

%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