首页 > 代码库 > LeetCode 383 Ransom Note

LeetCode 383 Ransom Note

Problem:

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.

You may assume that both strings contain only lowercase letters.

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

Summary:

 给出两个字符串r,m,判断r串能否由m串组成。即r串中的所有字母包含在m串中即可。

Analysis:

Hash表

 1 class Solution {
 2 public:
 3     bool canConstruct(string ransomNote, string magazine) {
 4         int magChar[26] = {0};
 5         int len = magazine.size();
 6         for (int i = 0; i < len; i++) {
 7             magChar[magazine[i] - a]++;
 8         }
 9         
10         len = ransomNote.size();
11         for (int i = 0; i < len; i++) {
12             if (--magChar[ransomNote[i] - a] < 0) {
13                 return false;
14             }
15         }
16         
17         return true;
18     }
19 };

LeetCode 383 Ransom Note