题目
思路
用空间换时间,26大小的数组,判断第一个字符串ransom能不能由第二个字符串magazines里面的字符构成。
注意,杂志里的字母不可重复使用,出现几次算几次,第二次遍历出现一次减一次
如果为负数说明没出现。
代码
class Solution {
public boolean canConstruct(String ransomNote, String magazine) {
int[] record = new int[26];
for(char c : magazine.toCharArray()){
record[c - 'a'] += 1;
}
for(char c : ransomNote.toCharArray()){
record[c - 'a'] -= 1;
}
//如果数组中存在负数,说明ransomNote字符串总存在magazine中没有的字符
for(int i : record){
if(i < 0){
return false;
}
}
return true;
}
}