leetcode[Ransom Note]//待整理多种解法

解法一:

public class Solution {
	//题目要求判断字符串magazine的某些字符能够组成字符串ransomNote
	//所以用一个Map来存储,判断计数即可
    public boolean canConstruct(String ransomNote, String magazine) {
        HashMap<Character, Integer> mapR = new HashMap<>();
        HashMap<Character, Integer> mapM = new HashMap<>();
        //统计字符串ransomNote的Map
        for(int i = 0; i < ransomNote.length(); i++){
        	char c = ransomNote.charAt(i);
        	if(mapR.containsKey(c)){
        		mapR.put(c, mapR.get(c) + 1);
        	}
        	else{
        		mapR.put(c, 1);
        	}
        }
        //统计字符串magazine的Map
        for(int i = 0; i < magazine.length(); i++){
        	char c = magazine.charAt(i);
        	if(mapM.containsKey(c)){
        		mapM.put(c, mapM.get(c) + 1);
        	}
        	else{
        		mapM.put(c, 1);
        	}
        }
        //遍历mapR,看mapM中是否有满足条件的...
        Iterator<Character> iterator = mapR.keySet().iterator();
        while(iterator.hasNext()){
        	char c = iterator.next();
        	if(!mapM.containsKey(c)){
        		return false;
        	}
        	else{
        		if(mapR.get(c) > mapM.get(c)){//超过的话mapM就不能提供了
        			return false;
        		}
        	}
        }
        
        return true;
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值