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 @ 2024-03-26 22:02  guanyubo  阅读(43)  评论(0)    收藏  举报