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.

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

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

example : canConstruct("a", "b") -> false canConstruct("aa", "ab") -> false canConstruct("aa", "aab") -> true

//判断杂志上的字是否能够组成勒索信需要的那些字符。 这里需要注意的就是杂志上的字符只能被使用一次,不过不用考虑大小写的问题。

class Solution {

    public boolean canConstruct(String ransomNote, String magazine) {

        int[] arr = new int[26];//用数组记录magazine每个字符出现次数

        for (int i = 0; i < magazine.length(); i++)

            arr[magazine.charAt(i) - 'a']++; //a出现则arr[0]加1,b则arr[1]加1,c则arr[2]加1

        for (int i = 0; i < ransomNote.length(); i++) {

            if (--arr[ransomNote.charAt(i) - 'a'] < 0) //ransomNote出现个字符,字符对应值减一

                return false;

        }

        return true;

    }

 

}

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄