1. 程式人生 > >【JS】贖金信 #字串 Easy

【JS】贖金信 #字串 Easy

給定一個贖金信 (ransom) 字串和一個雜誌(magazine)字串,判斷第一個字串ransom能不能由第二個字串magazines裡面的字元構成。如果可以構成,返回 true ;否則返回 false。

(題目說明:為了不暴露贖金信字跡,要從雜誌上搜索各個需要的字母,組成單詞來表達意思。)

注意:
你可以假設兩個字串均只含有小寫字母。

canConstruct(“a”, “b”) -> false
canConstruct(“aa”, “ab”) -> false
canConstruct(“aa”, “aab”) -> true



解法一:

利用 indexOf(index,num) 查詢功能,

查到的字元可以直接刪除,或者賦值一個其它的數,

使用刪除會花費額外的時間,因為有序陣列,刪一個字元會改變後面所有的字元位置。

而賦值不會,所以賦值是更快的

var canConstruct = function(ransomNote, magazine) {

    var x 
    magazine=magazine.split("")
    for(var i=0;i<ransomNote.length;i++){
        if( (x=magazine.indexOf(ransomNote[i])) > -1){
            //magazine.splice(x,1)
             magazine[x]=0
        }else{
            return false;
        }
    }
    
    return true;
}

執行用時:76 ms
已經戰勝 98.40 % 的 javascript 提交記錄