方法:哈希法
思路:要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。字符串里全是小写字母,个数确定,用数组。下标表示字母,元素表示出现次数。遍历第一个字符串,对应下标次数加1,再遍历第二个字符串,在两个字符串都出现的字母下标减1。最后遍历数组,元素有不为0的返回false,否则返回true。
class Solution {
public boolean canConstruct(String ransomNote, String magazine) {
//空字符串,直接返回false
if(ransomNote==null||magazine==null)
return false;
//设置数组,每个数组元素表示小写字母的个数
int resul[]=new int[26];
//遍历第一个字符串,出现的字符的元素加1
for(int i=0;i<ransomNote.length();i++)
resul[ransomNote.charAt(i)-'a']++;
//遍历第二个字符串,在两字符串中都出现的字符的元素减1
for(int i=0;i<magazine.length();i++)
{
if(resul[magazine.charAt(i)-'a']!=0)
resul[magazine.charAt(i)-'a']--;
}
//最后遍历数组,元素全为0返回true,否则false
for(int i=0;i<26;i++)
{
if(resul[i]!=0)
return false;
}
return true;
}
}