Heim >Web-Frontend >js-Tutorial >Codewars – Zwei zu Eins

Codewars – Zwei zu Eins

Barbara Streisand
Barbara StreisandOriginal
2025-01-06 08:50:42920Durchsuche

Anreden.

Codewars - Two to One

Ich poste in dieser Serie Codewars-Herausforderungen und meinen Denkprozess. Ich verwende wann immer möglich JS und Node 18. Nur der Klarheit halber nutze ich sie fair.

Ok, das war saftig. Im Wesentlichen müssen Sie Duplikate in einer Zeichenfolge entfernen, den Rest ordnen und zwei Zeichenfolgen verbinden. Nicht genau in dieser Reihenfolge. Eigentlich habe ich es genau umgekehrt gemacht. Und ich habe auch eine Hilfsfunktion für einen ganz bestimmten Schritt (Entfernen von Duplikaten) erstellt.


Verketten Sie zunächst zwei Zeichenfolgen. Ganz einfach:

let longest = s1 + s2;

Zweitens teilen Sie die Buchstaben auf:

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

Drittens sortieren Sie die Buchstaben:

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

Viertens: Duplikate entfernen:

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

Fünftens: Aufräumen:

array = array.join("");

Zuletzt fügen Sie alle Puzzleteile zusammen:

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

Es ist definitiv NICHT performant. Ich mag diese zweite Schleife nicht. Und es ist auch nicht so sauber. Eines Tages muss ich mir das noch einmal ansehen.

Alles gut. Wasser trinken???.

Zurück

Das obige ist der detaillierte Inhalt vonCodewars – Zwei zu Eins. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Beginnend mit `.0`Nächster Artikel:Beginnend mit `.0`