383. Ransom Note

来源:互联网 发布:旗鱼网络加速器 编辑:程序博客网 时间:2024/06/06 21:53

Given an arbitrary ransom note string and another string containing letters from all the magazines, write a function that will return true if the ransom note can be constructed from the magazines ; otherwise, it will return false.

Each letter in the magazine string can only be used once in your ransom note.

Note:
You may assume that both strings contain only lowercase letters.

canConstruct("a", "b") -> falsecanConstruct("aa", "ab") -> falsecanConstruct("aa", "aab") -> true

思路:
这是LeetCode Discuss中的最热代码,它的原理就是列出了magazine的字母表,然后算出了出现个数,然后遍历ransomNote,保证有足够的字母可用,代码非常清晰。

class Solution {    public boolean canConstruct(String ransomNote, String magazine) {        int[] arr = new int[26];        for (int i = 0; i < magazine.length(); i++) {            arr[magazine.charAt(i) - 'a']++;        }        for (int i = 0; i < ransomNote.length(); i++) {            if(--arr[ransomNote.charAt(i)-'a'] < 0) {                return false;            }        }        return true;    }}