Maison > interface Web > js tutoriel > Codewars - Compter les doublons

Codewars - Compter les doublons

Susan Sarandon
Libérer: 2025-01-04 19:21:41
original
314 Les gens l'ont consulté

Salutations.

Codewars - Counting Duplicates

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.

Pour le défi "Compter les doublons", je vais commencer par ceci :

function duplicateCount(text){
  text = text.toString();
  let countTotal = {"max":0};
  let letter = '';
  for (let i=0 ; i < text.length ; i++){
    letter = text.at(i).toLowerCase();
    if (letter){
      countTotal[letter] = countTotal[letter] ? countTotal[letter]++ : 1;
      if (countTotal[letter] > countTotal["max"]){
        countTotal["max"] = countTotal[letter];
      }
    }
  }
  return countTotal["max"];
}
Copier après la connexion

Ça semble... verbeux. Je me demande si autant de mots visent réellement la bonne direction. Je te laisse un peu de temps si tu veux réfléchir par toi-même.

3...

2...

1...

1/2...

1/4...

Ok, je pense que ça suffit. Non. L'argot de la Bay Area a fait son chemin sur le Web, donc si je peux me permettre : c'est bonjour faux.

Le fait est que j'essayais de trouver combien de doublons de la lettre la plus dupliquée y a-t-il. Il s'avère que nous devons répondre au nombre de types en double. Insensible à la casse.

AbC -> 0 -> aucune lettre ne se répète
AbCC -> 1 -> "C" se répète, on s'en fiche combien de fois
AbBCC -> 2 -> "b" et "c" répètent, on s'en fout du nombre de fois ou du boîtier

Nous pouvons profiter des littéraux d'objet en JS pour créer un compteur pour chaque lettre. Ensuite, une propriété pourrait être les « répétitions », ce qui serait un compteur qui augmente UNIQUEMENT chaque fois qu'une lettre apparaît deux fois.

if (countTotal[letter]==2){
        countTotal.repetitions++;
      }
Copier après la connexion

Solution complète :

function duplicateCount(text){
  text = text.toString();
  let countTotal = {"repetitions": 0};
  let letter = '';
  for (let i=0 ; i < text.length ; i++){
    letter = text.at(i).toLowerCase();
    if (letter){
      (countTotal[letter] === undefined) ? countTotal[letter] = 0 : null;
      countTotal[letter]++;
      if (countTotal[letter]==2){
        countTotal.repetitions++;
      }
    }
  }
  return countTotal["repetitions"];
}
Copier après la connexion

Cela a pris du temps, cela peut être amélioré.

Prends soin de toi. 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