美文网首页
383. 赎金信

383. 赎金信

作者: KaMu1 | 来源:发表于2019-10-15 16:12 被阅读0次

    解题思路

    统计magzine字符串中每一个字符串的出现次数,再遍历ransom中每一字母。

    STL实现

    unorder_map直接利用[]给不存在的key-value赋值是可行的
    不存在的key对应的value++先赋值默认值

    class Solution {
    public:
        bool canConstruct(string ransomNote, string magazine) {
            unordered_map<char,int> mag;
            
            for(auto iter = magazine.begin();iter!=magazine.end();iter++) {
                mag[*iter] += 1;
            }
            
            for(auto iter = ransomNote.begin();iter!=ransomNote.end();iter++) {
                mag[*iter] -= 1;
                if(mag[*iter]<0)
                    return false;
            }
            return true;
        }
    };
    

    直接利用简单的hash

    本题中只有小写字母,直接hash更加方便
    使用STL迭代器在某些情况下会造成性能浪费
    magazine[i]判断是否遍历完全

    class Solution {
    public:
        bool canConstruct(string ransomNote, string magazine) {
            int hash[26]{};
            for(int i = 0;magazine[i];i++) {
                hash[magazine[i]-'a'] ++;
            }
            for(int i = 0;ransomNote[i];i++) {
                if(--hash[ransomNote[i]-'a']<0)
                    return false;
            }
            return true;
        }
    };
    

    相关文章

      网友评论

          本文标题:383. 赎金信

          本文链接:https://www.haomeiwen.com/subject/tnusmctx.html