?🔥博客主頁:?我要成為C++領域大神
🎥系列專欄:【C++核心編程】?【計算機網絡】?【Linux編程】?【操作系統】
??感謝大家點贊👍收藏?評論??本博客致力于知識分享,與更多的人進行學習交流
?
給你兩個字符串: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 <= 105
- ransomNote 和 magazine 由小寫英文字母組成
哈希數組
思路
判斷一個元素是否在另外一個集合中出現,很容易想到哈希表。
由于題目說了字符串只有小寫英文字母組成,所以可以使用數組作為哈希表,長度是26。遍歷magazine字符串,對應哈希表下標位置加1。然后再遍歷ransomNote,對應哈希表下標位置減1,如果在這個過程中出現哈希表元素為負數,則說明出現了在ransomNote中出現,magazine中未出現的字符。
代碼實現
class Solution {
public:bool canConstruct(string ransomNote, string magazine) {int length=magazine.size();vector<int> Mag(26,0);for(char letter:magazine){Mag[letter-'a']++;}for(char letter:ransomNote){if(--Mag[letter-'a']<0)return false;}return true;}
};