算法Day-7-输入:ransomNote = "aa", magazine = "aab" 输出:true 提示:

  • 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;

    }
}

上一篇:FSM有限状态机的使用


下一篇:[ComfyUI]Flux:爆火禅语小和尚素材!禅意人生,享受自在