LeetCode—— Ransom Note

題目描述

思路

本人在解決這道題目時,算法的複雜度爲o(n^2),速度很是慢java

在參考了別人的答案後,發現可實現o(n),真是感慨啊!算法

思路大體是這樣的數組

一、將字符串的全部字母都遍歷一遍,並把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;
    }       
}
複製代碼
相關文章
相關標籤/搜索