zoukankan      html  css  js  c++  java
  • 383. Ransom Note

    1. 问题描述

    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

    Tags: String

    2. 解题思路


    3. 代码

    class Solution {
    public:
        bool canConstruct(string ransomNote, string magazine)
        {
            std::map<char, int> m1;
            for (int i=0; i<magazine.size(); i++)
            {
                m1[magazine[i]]++;
            }
    
            std::map<char, int> m2;
            for (int i=0; i<ransomNote.size(); i++)
            {
                m2[ransomNote[i]]++;
            }
    
            if (m2.size() > m1.size())
            {
                return false;
            }
    
            map<char, int>::iterator it = m2.begin();
            map<char, int>::iterator itEnd = m2.end();
            for (; it != itEnd; it++)
            {
                if (m1.count(it->first) == 0)
                {
                    return false;
                }
    
                if (it->second > m1[it->first])
                {
                    return false;
                }
            }
            return true;
        }
    };

    4. 反思

  • 相关阅读:
    [MySql]insert...select 8/10
    秀出Administrator帳戶6/27
    Love
    讀取Gridview的隱藏欄8/22
    水晶報表公式換行8/2
    MySql.Data.MySqlClient.MySqlException 7/9
    mysql的錯誤日誌爆满7/24
    从汇编看c++中的const常量
    可见性和生命期的区别
    比较烦
  • 原文地址:https://www.cnblogs.com/whl2012/p/5805052.html
Copyright © 2011-2022 走看看