1 <= ransomNote.length, magazine.length <= 105
-
ransomNote
和magazine
由小写英文字母组成
本题判断两个字符串,一个字符串a是否能够由字符串b构成,并且字符串b的每个字符只能用一次,这里我们就使用ASI码进行-‘a’然后将字符存储在int[] sum 长度为26;记录每个字符的出现的次数,然后遍历字符串b,将b的中出现的字符在sum中进行相应的减1,并判断是否小于0,如果小于0则返回false,最后如果没有返回false。然后返回true;
public class Solution {
public bool CanConstruct(string ransomNote, string magazine) {
if(ransomNote.Length>magazine.Length) return false;
int[] sum = new int[26];
for(int i = 0;i<magazine.Length;i++){
sum[magazine[i]-'a']++;
}
for(int i = 0;i<ransomNote.Length;i++){
sum[ransomNote[i]-'a']--;
if(sum[ransomNote[i]-'a']<0) return false;
}
return true;
}
}