C++ map踩坑

目录


    !!!不要直接使用[]来操作map,否则会有意想不到的错误。尽量使用map提供的函数(count、find、insert、erase)来操作map

    242. 有效的字母异位词

    描述:
    给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
    注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
    示例 1:
    输入: s = "anagram", t = "nagaram"
    输出: true
    示例 2:
    输入: s = "rat", t = "car"
    输出: false

    class Solution {
    public:
        bool isAnagram(string s, string t) {
            map<char, int> _map;
            for(int i = 0; i < s.size(); i++) {
                if (_map.count(s[i]) == 0) {
                    _map.insert(make_pair(s[i], 1));
                } else {
                    auto tmp = _map.find(s[i]);
                    tmp->second++;
                }
            }
    
            for (int i = 0; i < t.size(); i++) {
                if (_map.count(t[i]) > 0) {
                    auto tmp = _map.find(t[i]);
                    tmp->second--;
                    if (tmp->second == 0) {
                        _map.erase(tmp);
                    }
                } else {
                    for (auto it : _map) {
                        cout << it.first << ":" << it.second << endl;
                    }
    
                    return false;
                }
            }
    
            if (_map.size() > 0) {
                return false;
            }
    
            return true;
        }
    };
    
    posted @   guanyubo  阅读(25)  评论(0编辑  收藏  举报
    相关博文:
    阅读排行:
    · 全程不用写代码,我用AI程序员写了一个飞机大战
    · DeepSeek 开源周回顾「GitHub 热点速览」
    · 记一次.NET内存居高不下排查解决与启示
    · MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
    · .NET10 - 预览版1新功能体验(一)
    点击右上角即可分享
    微信分享提示