HashTable类型题目

题目描述:给你两个字符串: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

题目分析: 是一类*字符统计类题目,只要统计m里面的字符在r里面有没有,所以用数组维护一个hashtable就可以*(用ascii码来解决) key就是count数组标,value就是减去ascii码的数值,比较数值从而达到目的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class RansomNote {
class Solution {
public boolean canConstruct(String ransomNote, String magazine) {
int[] count = new int[26];
for (char m : magazine.toCharArray()) {
count[m - 'a']++;
}
for (char r : ransomNote.toCharArray()) {
if (count[r - 'a'] <= 0) return false;
count[r - 'a']--;
}
return true;
}
}
}