Rumah >hujung hadapan web >tutorial js >Codewars - Dua kepada Satu

Codewars - Dua kepada Satu

Barbara Streisand
Barbara Streisandasal
2025-01-06 08:50:42975semak imbas

Salam.

Codewars - Two to One

Saya menyiarkan cabaran Codewars dan proses pemikiran saya dalam siri ini. Saya menggunakan JS dan Node 18 apabila boleh. Hanya demi kejelasan, saya menggunakan mereka secara adil.

Ok, ini berair. Pada dasarnya, anda perlu mengalih keluar pendua dalam rentetan, susun apa yang tinggal dan sertai dua rentetan. Tidak betul-betul dalam susunan itu. Sebenarnya, saya melakukannya dengan cara yang bertentangan. Dan saya juga membina fungsi utiliti untuk langkah yang sangat khusus (mengalih keluar pendua).


Pertama, gabungkan dua rentetan. Mudah:

let longest = s1 + s2;

Kedua, belah huruf:

let array = new Array(s1.length + s2.length);
for (let i = 0 ; i < s1.length + s2.length ; i++ ){
    array[i] = longest[i];
  }

Ketiga, susun huruf:

array = array.sort((a, b) => a.localeCompare(b));
// (a, b) => a.localeCompare(b)  THIS IS REDUNDANT, but I leave it as a reminder

Keempat, alih keluar pendua:

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;
}

Kelima, bersihkan:

array = array.join("");

Terakhir, letakkan setiap kepingan teka-teki bersama:

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;
}

Ia pastinya TIDAK berprestasi. Saya tidak suka gelung kedua itu. Dan ia juga tidak begitu bersih. Suatu hari nanti saya perlu melawat semula yang ini.

Selamatlah. Minum air ???.

Sebelumnya

Atas ialah kandungan terperinci Codewars - Dua kepada Satu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Bermula dengan semver `.0`Artikel seterusnya:Bermula dengan semver `.0`