問候。
我在這個系列中發布了 Codewars 挑戰和我的思考過程。我盡可能使用 JS 和 Node 18。只是為了清楚起見,我正在合理地使用它們。
好吧,這多汁。本質上,您必須刪除字串中的重複項,對剩餘的內容進行排序,然後連接兩個字串。不完全按照這個順序。事實上,我以完全相反的方式做到了這一點。我還為一個非常具體的步驟建立了一個實用函數(刪除重複項)。
首先,連接兩個字串。簡單:
let longest = s1 + s2;
第二,分割字母:
let array = new Array(s1.length + s2.length); for (let i = 0 ; i < s1.length + s2.length ; i++ ){ array[i] = longest[i]; }
第三,將字母排序:
array = array.sort((a, b) => a.localeCompare(b)); // (a, b) => a.localeCompare(b) THIS IS REDUNDANT, but I leave it as a reminder
四、刪除重複:
function keepFirstLetter(array){ let arrayFixed = new Array(array.length); let counter = 0; arrayFixed[0] = array[0]; for (let i = 0 ; i < array.length ; i++ ){ if (arrayFixed[counter] != array[i]){ counter++; arrayFixed[counter] = array[i]; } } return arrayFixed; }
五、清理:
array = array.join("");
最後,將拼圖的每一塊放在一起:
function longest(s1, s2) { let array = new Array(s1.length + s2.length); let longest = s1 + s2; for (let i = 0 ; i < s1.length + s2.length ; i++ ){ array[i] = longest[i]; } array = array.sort((a, b) => a.localeCompare(b)); array = keepFirstLetter(array); array = array.join("") return array; } function keepFirstLetter(array){ let arrayFixed = new Array(array.length); let counter = 0; arrayFixed[0] = array[0]; for (let i = 0 ; i < array.length ; i++ ){ if (arrayFixed[counter] != array[i]){ counter++; arrayFixed[counter] = array[i]; } } return arrayFixed; }
它絕對不是高性能的。我不喜歡第二個循環。而且也不是那麼乾淨。有一天我需要重新審視這件事。
祝你一切順利。喝水???.
上一頁
以上是代碼戰爭 - 二對一的詳細內容。更多資訊請關注PHP中文網其他相關文章!