力扣刷题 DAY_13 哈希表

leetcode 242

链接: 力扣 。

题目:

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

说明: 你可以假设字符串只包含小写字母。

示例1:

输入: s = "anagram", t = "nagaram"

输出: true

示例2:

输入: s = "rat", t = "car"

输出: false

思路:

很简单的hash就可以解决。设置一个大小为26的int型数组,其中所有元素初始化为0,下标0~25代表字母a~z。遍历第一个串的每个字符,对于当前 i 号位,使 hashMap[s[i] - 'a']加一。然后遍历第二个字符串,对于当前 i 号位,使 hashMap[t[i] - 'a']减一。

最后遍历hashMap数组,如果其中有元素不为0,返回false;反之,返回true。

参考代码:

class Solution {
public:
    bool isAnagram(string s, string t) {
        int hashMap[26] = {0};
        for (int i = 0; i < s.size(); i++) {
            hashMap[s[i] - 'a']++;
        }
        for (int i = 0; i < t.size(); i++) {
            hashMap[t[i] - 'a']--;
        }
        for (int i = 0; i < 26; i++) {
            if (hashMap[i] != 0) {
                return false;
            }
        }
        return true;
    }
};


版权声明:本文为jgsecurity原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。