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

Codewars - Dua kepada Satu

Barbara Streisand
Lepaskan: 2025-01-06 08:50:42
asal
911 orang telah melayarinya

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;
Salin selepas log masuk

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];
  }
Salin selepas log masuk

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
Salin selepas log masuk

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;
}
Salin selepas log masuk

Kelima, bersihkan:

array = array.join("");
Salin selepas log masuk

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;
}
Salin selepas log masuk

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!

sumber:dev.to
Kenyataan Laman Web ini
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 terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan