当前位置: 首页 > 后端技术 > Java

LeetCode-383-Ransomletter

时间:2023-04-01 16:02:11 Java

Ransomletter题目描述:给定一个赎金信(ransom)字符串和一个杂志(magazine)字符串,判断第一个字符串ransom是否可以包含在第二个字符串magazines字符组成中。如果可以构造则返回真;否则返回假。(题目解释:为了不暴露勒索信的笔迹,从杂志上搜索每一个需要的字母组成一个词来表达意思。杂志串中的每个字符在勒索信中只能出现一次string.)请解释示例参见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode所有。商业转载请联系官方授权,非商业转载请注明出处。方案一:遍历字符串,先声明一个Map为charCount,记录ransomNote中每个字符出现的次数,key为字符出现次数,value为重复字符出现次数,然后遍历ransomNote为初始化ransomNote中字符出现的次数;然后遍历杂志中的每个字符,减去Map中剩余的字符。上次遍历后,如果charCount为空,说明字符串ransom可以由第二个字符串杂志中的字符组成,返回true;否则,返回false。importjava.util.HashMap;importjava.util.Map;publicclassLeetCode_383{publicstaticbooleancanConstruct(StringransomNote,Stringmagazine){MapcharCount=newHashMap<>();//初始化ransomNote字符出现次数for(charc:ransomNote.toCharArray()){if(charCount.containsKey(c)){charCount.put(c,charCount.get(c)+1);}else{charCount.put(c,1);}}//判断杂志中是否有可以形成ransomNote的字符for(charc:magazine.toCharArray()){if(charCount.containsKey(c)){if(charCount.get(c)>1){字符计数。put(c,charCount.get(c)-1);}else{字符数。删除(c);}}}if(charCount.isEmpty()){返回真;}else{返回错误;}}公共静态无效主要n(String[]args){System.out.println(canConstruct("aa","aab"));}}【每日留言】权势不怕“难”字,就怕“懒”字