题目:
给你两个字符串:
ransomNote
和magazine
,判断ransomNote
能不能由magazine
里面的字符构成。如果可以,返回
true
;否则返回false
。
magazine
中的每个字符只能在ransomNote
中使用一次
解题思路:这道题的解题思路与有效的字母异位词一模一样
1.如果两个字符串长度不相等,返回false
2.创建一个长度为26的数组,以便于存储26个字母的个数
3.首先遍历字符串s,通过每个字符减去‘a’得到的数字则为数组的下标存储每个字符出现的次数
4.遍历字符串t,出现过的字符则在遍历字符串s中的个数减去1,最后判断如果剩下的table数组中有数值小于0,则说明两个字符中有字符不相等
代码实现:class Solution { public boolean canConstruct(String ransomNote, String magazine) { int []table = new int[26]; for (int i = 0; i <magazine.length() ; i++) { table[magazine.charAt(i)-'a']++; } for (int i = 0; i <ransomNote.length() ; i++) { table[ransomNote.charAt(i)-'a']--; if (table[ransomNote.charAt(i)-'a']<0){ return false; } } return true; } }