Skip to content
本页目录

0383-赎金信

https://leetcode.cn/problems/ransom-note

为了不在赎金信中暴露字迹,从杂志上搜索各个需要的字母,组成单词来表达意思。 给你一个赎金信 (ransomNote) 字符串和一个杂志(magazine)字符串,判断 ransomNote 能不能由 magazines 里面的字符构成。 如果可以构成,返回 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 由小写英文字母组成

思路

使用字典缓存ransomNote,然后从magazine里面找,找到就减1,找不到就返回false

csharp
public class Solution {
    public bool CanConstruct(string ransomNote, string magazine) {
    	Dictionary<char,int> dict = new Dictionary<char,int>();
    	//加入字典
    	for(int i=0; i<magazine.Length; i++){
    		if(dict.ContainsKey(magazine[i])){
    			dict[magazine[i]]++;
    		}
    		else{
    			dict.Add(magazine[i],1);
    		}
    	}
    	//循环取出
    	for(int i=0; i<ransomNote.Length; i++){
    		if(dict.ContainsKey(ransomNote[i]) && dict[ransomNote[i]] > 0){
    			dict[ransomNote[i]]--;
    		}
    		else{
    			return false;
    		}
    	}
    	return true;
    }
}

Released under the MIT License.