leetcode242 哈希表

关联容器:

map(映射)存储键值对、set(集合)存储唯一的元素

  • map 和 set(multimap 和 multiset)

    • 底层实现是红黑树

    • 红黑树是 map 和 set 的底层数据结构。

  • unordered_map 和 unordered_set

    • 底层实现是哈希表

    • 哈希表是 unordered_map 和 unordered_set 的底层数据结构。

s 和 t 中每个字符出现的次数都相同,则 s 和 t 互为字母异位词。碰到这种类似什么字符出现次数啥的,如果没有思路了,都可以往哈希的思路上便一下。

找出哈希函数,就是把每一个 key 对应到 0 ~ N-1 的范围内,并且放在合适的位置。

哈希函数找好,下面的就很简单:

  • 遍历字符串 s,哈希表对应的字符值加。

  • 遍历字符串 t,哈希表对应的字符值减。

  • 如果哈希表中的值都为 0,则 s 和 t 互为字母异位词。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值