Java解决赎金信问题
01 题目
-
给你两个字符串:
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
由小写英文字母组成
02 知识点
- 循环
- 哈希表
03 我的题解思路
public static boolean canConstruct(String ransomNote, String magazine) {
HashMap<String, Integer> map=new HashMap<>();
//循环加入map
for (int i = 0; i < magazine.length(); i++) {
String s=String.valueOf(magazine.charAt(i));
int count =map.containsKey(s) ? map.get(s):0;
map.put(s, count+1);
}
//循环判断
for (int i = 0; i < ransomNote.length(); i++) {
String s=String.valueOf(ransomNote.charAt(i));
if(map.get(s)!=null){
if(map.get(s)>0) {
int count=map.get(s)-1;
map.put(s,count);
continue;
}
}
return false;
}
return true;
}
04 优秀题解
https://leetcode.cn/problems/ransom-note/solutions/1135839/shu-jin-xin-by-leetcode-solution-ji8a