2023-11-08
思路:
1 暴力法:
遍历前者,从后者找到就从后者删除
2 哈希表法:
前者存入哈希表:循环一定要遍历完的,调用的库函数较多
class Solution { Map<Character,Integer> map=new HashMap<>(); public boolean canConstruct(String ransomNote, String magazine) { //简单的哈希表 //2个存入map好像都行,但是后者简单 前者循环要跑完的,后者可能不需要 //暴力法 从后者找到,就删除,继续找 //前者存入哈希表 for(int i=0;i<ransomNote.length();i++){ char now=ransomNote.charAt(i); map.put(now,map.getOrDefault(now,0)+1); } for(int i=0;i<magazine.length();i++){ char now=magazine.charAt(i); if(!map.containsKey(now)){ continue; } map.put(now,map.get(now)-1); if(map.get(now)==0){ map.remove(now); } } if(map.isEmpty()){ return true; } return false; } }
后者存入哈希表:循环可能不需要遍历完
class Solution { Map<Character,Integer> map=new HashMap<>(); public boolean canConstruct(String ransomNote, String magazine) { //简单的哈希表 //2个存入map好像都行,但是后者简单 前者循环要跑完的,后者可能不需要 for(int i=0;i<magazine.length();i++){ char now=magazine.charAt(i); map.put(now,map.getOrDefault(now,0)+1); } for(int i=0;i<ransomNote.length();i++){ char now=ransomNote.charAt(i); if(map.get(now)==null){ return false; } int x=map.get(now); if(x<=0){ return false; } map.put(now,map.get(now)-1); } return true; } }
3 因为题目都是小写字母,还可以用字符统计来写,2个数组,但是这种方法有局限性
- day07 代码随想录算法训练营 383. 赎金信
- 代码随想录算法训练营第六天|454.四数相加二、383.赎金信、15.三数之和、18.四数之和
- 代码随想录算法训练营第七天|454.四数相加II,383. 赎金信,15. 三数之和,18. 四数之和
- 383. 赎金信
- 代码随想录算法训练营第6天 | lc454、lc383、lc15、lc18
- 代码随想录算法训练营第七天 | ● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和
- 383. 赎金信
- 代码随想录第七天 | 454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和
- 代码随想训练营第七天(Python)| 454.四数相加II 、383. 赎金信 、15.三数之和 、18. 四数之和
- 高速信号处理卡原理图:383-基于kintexUltraScaleXCKU060的双路QSFP+光纤PCIe卡光纤加速计算
本栏目推荐文章