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.
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;
}
}
原文:https://www.cnblogs.com/MarkLeeBYR/p/10678227.html