LeetCode:赎金信

题目描述:

给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。

如果可以,返回 true ;否则返回 false 。

magazine 中的每个字符只能在 ransomNote 中使用一次。

解题思路:

遍历其中一个字符串,并使用容器保存,记录每个字符出现的次数。再遍历另外一个字符串,在容器中寻找其是否存在,若存在对其值进行减一,其值为负返回false。

代码实现:

bool canConstruct(string ransomNote, string magazine) {
        if(ransomNote.size()>magazine.size())
        {
            return false;
        }
        map<char,int>Htable;
        for(auto &ite:magazine)
        {
            ++Htable[ite];
        }
        for(auto &ite:ransomNote)
        {
            if(Htable.find(ite)!=Htable.end())
            {
                if(Htable[ite])
                {
                    --Htable[ite];
                }else
                {
                    return false;
                }
            }
            else{
                return false;
            }
        }
        return true;
    }
posted @ 2023-02-21 20:59  kknothing  阅读(31)  评论(0)    收藏  举报