Leetcode 383:赎金信

给你两个字符串:ransomNotemagazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。

如果可以,返回 true ;否则返回 false

magazine 中的每个字符只能在 ransomNote 中使用一次。

解题思路:

Map所用的时间和空间,都要高于用数组。

可以尝试将字母转换成0-26的数字,存储在数组中。

方法一:Map

public static boolean canConstruct(String ransomNote, String magazine) {
        Map map=new HashMap<>();
        for(int i=0;i

方法二:数组

public static boolean canConstruct2(String ransomNote, String magazine) {
        int[] arr=new int[26];
        int n,m;   //将字符转成0-26的数字
        int lenM=magazine.length();
        int lenR=ransomNote.length();
        for(int i=0;i0){
                arr[m]--;
            }else{
                return false;
            }
        }
        return true;
    }

你可能感兴趣的:(leetcode,java,算法)