首頁 > web前端 > js教程 > 代碼戰爭 - 二對一

代碼戰爭 - 二對一

Barbara Streisand
發布: 2025-01-06 08:50:42
原創
911 人瀏覽過

問候。

Codewars - Two to One

我在這個系列中發布了 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中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板