zoukankan      html  css  js  c++  java
  • [LeetCode] Ransom Note

    Given an arbitrary ransom note string and another string containing letters from all the magazines, write a function that will return true if the ransom note can be constructed from the magazines ; otherwise, it will return false.

    Each letter in the magazine string can only be used once in your ransom note.

    Note:
    You may assume that both strings contain only lowercase letters.

    canConstruct("a", "b") -> false
    canConstruct("aa", "ab") -> false
    canConstruct("aa", "aab") -> true
    

     寻找ransomNote中的字母是否由magazine中的字母组成,且每一个在magazine中的字母在ransomNote中只能被使用1次。通过map建立magazine中字母与出现次数的查找表,遍历ransomNote,如果在map中找到该字母,则让map中的该字母出现的次数-1,若次数小于0,返回false;如果map中未找到这个字母,返回false。如果遍历结束仍没有返回值,说明ransomNote中的字母都是由magazine中的字母组成,返回true。

    class Solution {
    public:
        bool canConstruct(string ransomNote, string magazine) {
            unordered_map<char, int> m;
            for (int i = 0; i != magazine.size(); i++)
                m[magazine[i]]++;
            for (int i = 0; i != ransomNote.size(); i++) {
                if (m.count(ransomNote[i])) {
                    m[ransomNote[i]]--;
                    if (m[ransomNote[i]] < 0)
                        return false;
                }
                else
                    return false;
            }
            return true;
        }
    };
    // 36 ms
  • 相关阅读:
    常见的几种性能测试指标及计算公式
    性能测试分析
    性能测试的流程
    性能测试的基本知识
    Python的深拷贝、浅拷贝
    Http基础知识
    求List<int>中相等且连续的偶数的索引
    unity资源打包之后配置的生成
    unity在资源打包的时候,关于 hash 计算的简单总结
    C#中string.Join的用法
  • 原文地址:https://www.cnblogs.com/immjc/p/7183227.html
Copyright © 2011-2022 走看看