Appearance
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;
}
}
AlgoPress