赎金信

123 阅读1分钟

赎金信

383 赎金信

class Solution {
    public boolean canConstruct(String ransomNote, String magazine) {
        //和242 有效的字母异位词思想一致
        char[] ran_chars = ransomNote.toCharArray();
        char[] mag_chars = magazine.toCharArray();
        boolean flag = true;
        //借助数组实现字母hash结构
        int[] words = new int[26];

        //扫描mag_chars,统计每个单词出现的次数,加法
        for(char c: mag_chars) {
            words[c- 'a'] += 1;
        }

        //扫描ran_chars,相应位置上的单词次数,减法
        for (char c: ran_chars) {
            words[c - 'a'] -= 1;
        }

        //上述操作执行完后,如果words中有一个元素小于0,则跳出,表明不能构成
        for (int word : words) {
            if(word < 0) {
                flag = false;
                break;
            }
        }

        return flag;
    }
}