您的位置:首页 > 其它

383. Ransom Note

2016-08-24 23:28 323 查看

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. 反思

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: