[LeetCode]383. 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

建立字符表,对应字符的个数,如果ransom Note的字符数大于magazine的,返回false。

class Solution {
public:
    bool canConstruct(string ransomNote, string magazine) {
        if(ransomNote.length() > magazine.length()) return false;
        int dictRansom[256]={0};
        int dictMagazine[256]={0};
        
        for(int i = 0; i < ransomNote.length(); ++i){
            dictRansom[ransomNote[i]]++;
        }
        for(int i = 0; i < magazine.length(); ++i){
            dictMagazine[magazine[i]]++;
        }
        
        for(int i = 0; i < ransomNote.length(); ++i){
            if(dictRansom[ransomNote[i]] > dictMagazine[ransomNote[i]])
                return false;
        }
        return true;
    }
};

 

posted on 2016-09-19 05:12  医生工程师  阅读(198)  评论(0编辑  收藏  举报

导航