LeetCode 383:赎金信
⭕️ 解题思路:
(1)与字母异位的题类似,创建一个数组保存字符出现的次数,对于将字符转化为索引是通过 当前字符 - 'a'
来完成的
(2)遍历magazine字符串,更新字符出现的次数
(3)再遍历 ransomNote字符串,如果当前字符在数组中对应的值不为零,那么就将对应的值减一,反之说明当前数组中已经没有这个字符了。直接返回false即可
(4)最后返回true
❌ 代码部分:
class Solution {
public boolean canConstruct(String ransomNote, String magazine) {
if(ransomNote.length() > magazine.length() || magazine == null){
return false;
}
//解题思路与字符异位类似
int [] arr = new int[26];
//遍历magazine字符串,对应字符出现的次数加一
for(int i = 0; i < magazine.length(); i++){
arr[magazine.charAt(i) - 'a'] += 1;
}
//遍历ransomNote字符串,对应字符出现一次进行一次减一操作
for(int j = 0; j < ransomNote.length(); j++){
if(arr[ransomNote.charAt(j) - 'a'] != 0){
arr[ransomNote.charAt(j) - 'a'] -= 1;
}else{
return false;
}
}
return true;
}
}