🌗 383. 赎金信
2022年6月9日
- algorithm
🌗 383. 赎金信
难度: 🌗
问题描述
解法
class Solution {
public boolean canConstruct(String ransomNote, String magazine) {
// 思路:
// 数组做 map
int m = ransomNote.length();
int n = magazine.length();
// 特殊情况特判
if(m > n) {
return false;
}
// m <= n
// 先遍历长度小的填充 map
// 顺便记录有多少个不同字符
int[] array = new int[26];
int amount = 0;
for(char c : ransomNote.toCharArray()) {
int index = c - 'a';
if(array[index] == 0) {
amount ++;
}
array[index] ++;
}
// 遍历 长度长的数组,移除 array[] 对应元素
for(char c : magazine.toCharArray()) {
int index = c - 'a';
if(array[index] > 0) {
array[index] --;
if(array[index] == 0) {
amount --;
if(amount == 0) {
return true;
}
}
}
}
return false;
}
}