赎金信
给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。
如果可以,返回 true ;否则返回 false 。
magazine 中的每个字符只能在 ransomNote 中使用一次。
示例 1:
输入:ransomNote = "a", magazine = "b" 输出:false
示例 2:
输入:ransomNote = "aa", magazine = "ab" 输出:false
示例 3:
输入:ransomNote = "aa", magazine = "aab" 输出:true
提示:
1 <= ransomNote.length, magazine.length <= 105ransomNote和magazine由小写英文字母组成
代码:
1 class Solution { 2 public: 3 bool canConstruct(string ransomNote, string magazine) { 4 int r = ransomNote.size(); 5 int m = magazine.size(); 6 int hash1[26],hash2[26]; 7 for (int i = 0; i < 26; i++) 8 { 9 hash1[i] = 0; 10 hash2[i] = 0; 11 } 12 for(int i = 0;i<r;i++) 13 { 14 hash1[ransomNote[i]-'a']++; 15 } 16 for(int i = 0;i<m;i++) 17 { 18 hash2[magazine[i]-'a']++; 19 } 20 for(int i = 0;i<26;i++) 21 { 22 if(hash2[i]<hash1[i]) 23 return false; 24 } 25 return true; 26 } 27 };
学了一下哈希,本来想挨个查找的,但是分情况分迷糊了,100+个测试案例只通过35个😭

浙公网安备 33010602011771号