本人在解决这道题目时,算法的复杂度为,速度很是慢java
在参考了别人的答案后,发现可实现,真是感慨啊!算法
思路大体是这样的数组
一、将字符串的全部字母都遍历一遍,并把magazine的值的数量存到一个长度为26的int数组中spa
二、再遍历ransom,每遇到一个字母,就将int数组中对应的字母的数量减1,若是减后数量小于0,则应该返回falsecode
class Solution {
public boolean canConstruct(String ransomNote, String magazine) {
int[] alphabet = new int[26];
for(int i = 0; i < magazine.length(); i++){
alphabet[magazine.charAt(i) - 'a']++;
}
for(int j = 0; j < ransomNote.length(); j++){
if(--alphabet[ransomNote.charAt(j) - 'a'] < 0)
return false;
}
return true;
}
}
复制代码