哈希表--有效的字母异味词 leetcode 242

题目

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
示例 1:
输入: s = "anagram", t = "nagaram"
输出: true
示例 2:
输入: s = "rat", t = "car"
输出: false

说明:
你可以假设字符串只包含小写字母。
进阶:
如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?

思路

哈希表

先遍历一遍字符串s,将s中每个字符及其对应的次数存入哈希表中,然后遍历一遍字符串t,判断是否存在字符串s中,不存在返回false,遍历结束后判断哈希表中是否有剩余,有返回False
时间复杂度:O(n) 遍历字符串的时间
空间复杂度:O(n)

python
class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        sets = {}
        for c in s:
            if c in sets:
                sets[c] += 1
            else:
                sets[c] = 1
        
        for c in t:
            if c in sets:
                sets[c] -= 1
                if sets[c] == 0:
                    sets.pop(c)
            else:
                return False
        
        if len(sets) != 0:
            return False
        return True
c++
class Solution {
public:
    bool isAnagram(string s, string t) {
        if(s.size() != t.size()) return false;
        unordered_map map;
        for(char c : s) map[c] ++;
        for(char c : t) 
            if(-- map[c] == -1) return false;
        return true;

    }
};

你可能感兴趣的:(哈希表--有效的字母异味词 leetcode 242)