Maison > interface Web > js tutoriel > Codewars - Deux contre un

Codewars - Deux contre un

Barbara Streisand
Libérer: 2025-01-06 08:50:42
original
911 Les gens l'ont consulté

Salutations.

Codewars - Two to One

Je publie les défis Codewars et mon processus de réflexion dans cette série. J'utilise JS et Node 18 autant que possible. Par souci de clarté, j'en fais un usage équitable.

Ok, c'était juteux. Essentiellement, vous devez supprimer les doublons dans une chaîne, ordonner ce qui reste et joindre deux chaînes. Pas exactement dans cet ordre. En fait, je l'ai fait exactement à l'opposé. Et j'ai également construit une fonction utilitaire pour une étape très spécifique (suppression des doublons).


Tout d’abord, concaténez deux chaînes. Facile :

let longest = s1 + s2;
Copier après la connexion

Deuxièmement, divisez les lettres :

let array = new Array(s1.length + s2.length);
for (let i = 0 ; i < s1.length + s2.length ; i++ ){
    array[i] = longest[i];
  }
Copier après la connexion

Troisièmement, triez les lettres :

array = array.sort((a, b) => a.localeCompare(b));
// (a, b) => a.localeCompare(b)  THIS IS REDUNDANT, but I leave it as a reminder
Copier après la connexion

Quatrièmement, supprimez les doublons :

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;
}
Copier après la connexion

Cinquièmement, nettoyez :

array = array.join("");
Copier après la connexion

Enfin, placez chaque pièce du puzzle ensemble :

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;
}
Copier après la connexion

Ce n'est certainement PAS performant. Je n'aime pas cette deuxième boucle. Et ce n'est pas si propre non plus. Un jour, je devrai revoir celui-ci.

Portez-vous bien. Boire de l'eau ???.

Précédent

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal