知识点

字符串,哈希

解题思路

这道题的意思是能否用allocations中的字符构成requirements,字符不能重复使用。

使用两个map来分别存放两个字符串字符对应的数量,比较这两个map,如果allocations对应的字符的数量少于了requirements对应字符的数量,表示可提供的字符少于需要的字符数返回false,遍历完map就可以返回true。

Java题解

import java.util.*;

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param requirements string字符串 
     * @param allocations string字符串 
     * @return string字符串
     */
    public String can_construct (String requirements, String allocations) {
        HashMap<Character,Integer> map1=new HashMap<>();
        for(int i=0;i<requirements.length();i++){
            char ch=requirements.charAt(i);
            map1.put(ch,map1.getOrDefault(ch,0)+1);
        }
        HashMap<Character,Integer> map2=new HashMap<>();
        for(int i=0;i<allocations.length();i++){
            char ch=allocations.charAt(i);
            map2.put(ch,map2.getOrDefault(ch,0)+1);
        }
        for(char ch:map1.keySet()){
            if(map2.get(ch)==null||map2.get(ch)<map1.get(ch)){
                return "NO";
            }
        }
        return "YES";
    }
}