383. 赎金信

题目:

思路:

【1】本质上限制了小写字母,也就是说,出现的字符最多也就26个,所以如果magazine出现的字符能组成ransomNote字符串,那么必然就是不会出现该字符的使用为负的情况,如果负了,那么就是不可能。

代码展示:

//时间1 ms 击败 99.22%
//内存42.4 MB 击败 42.58%
class Solution {
    public boolean canConstruct(String ransomNote, String magazine) {
        int[] charArr = new int[26];
        for (char c : magazine.toCharArray()){
            charArr[c - 'a']++;
        }

        for (char c : ransomNote.toCharArray()){
            charArr[c - 'a']--;
            if (charArr[c - 'a'] < 0) return false;
        }
        return true;
    }
}


//时间0 ms 击败 100%
//内存42.6 MB 击败 28.76%
class Solution {
    public boolean canConstruct(String ransomNote, String magazine) {
        if(ransomNote.length() > magazine.length()){
           return false;
       }
       int chars[] = new int[26];
       for(int i = 0; i < ransomNote.length(); i++){
           char ch = ransomNote.charAt(i);
           int index = magazine.indexOf(ch, chars[ch - 'a']);
           if(index == -1){
               return false;
           }
           chars[ch - 'a'] = index + 1;
       }
       return true;
    }
}

 

posted @ 2023-06-27 15:08  忧愁的chafry  阅读(6)  评论(0编辑  收藏  举报