第一次嘗試用Javascript做Leetcode上的算法題,做了三個小時,終於完成了我的處女作。
簡直寫的要吐血了,此處有無數……….
原文題目如下:
Input: dict = [“cat”, “bat”, “rat”]
sentence = “the cattle was rattled by the battery”
Output: “the cat was rat by the bat”
解題思路如下:
dict模糊匹配sentence裏的內容,按照sentence的順序,將dict數組重排。
找出sentence裏面所有單詞,如果dict裏不包含這個單詞就把這個單詞存放在一容器arr中,如果dict包含這個單詞,將sentence相同位置的詞替換爲dict中的那個詞,這就保證了輸出結果符合題中要求。
代碼如下:
var replaceWords = function(dict, sentence) {
var result=[];
var newarr={};
for(var i=0;i<dict.length;i++){
var j=sentence.indexOf(dict[i].toString());
if(j>-1){
newarr[j]=dict[i].toString();
}
}
for(var key in newarr){
result.push(newarr[key])
}
dict=result; //將dict的數組重新排列
var newStr=sentence.split(" ");
var arr = [];
var s=0;
for(var i=0;i<newStr.length;i++){
if(newStr[i].indexOf(dict[s])>-1){
arr.push(dict[s]); //將需要替換的字符串存在在arr中
s++;
}
else{
arr.push(newStr[i]);//保留原來不變的字符串,存放在arr中
}
//return arr;
}
return arr.join(" "); //將最終結果數組轉化爲字符串並用空格分開
}
var dict=["cat", "bat", "rat"];
var sentence="the cattle was rattled by the battery";
console.log(replaceWords(dict,sentence));