🌗 383. 赎金信

吞佛童子2022年6月9日
  • algorithm
  • hash
小于 1 分钟

🌗 383. 赎金信

难度: 🌗

问题描述

img_3.png


解法

class Solution {
    public boolean canConstruct(String ransomNote, String magazine) {
        // 思路:
        // 数组做 map
        int m = ransomNote.length();
        int n = magazine.length();
        // 特殊情况特判
        if(m > n) {
            return false;
        }
        // m <= n
        // 先遍历长度小的填充 map
        // 顺便记录有多少个不同字符
        int[] array = new int[26];
        int amount = 0;
        for(char c : ransomNote.toCharArray()) {
            int index = c - 'a';
            if(array[index] == 0) {
                amount ++;
            }
            array[index] ++;
        }
        // 遍历 长度长的数组,移除 array[] 对应元素
        for(char c : magazine.toCharArray()) {
            int index = c - 'a';
            if(array[index] > 0) {
                array[index] --;
                if(array[index] == 0) {
                    amount --;
                    if(amount == 0) {
                        return true;
                    }
                }
            }
        }
        return false;
    }
}

输出

img_2.png

上次编辑于: 2022/6/20 下午8:24:47
贡献者: liuxianzhishou