Home >Web Front-end >JS Tutorial >Codewars - Counting Duplicates

Codewars - Counting Duplicates

Susan Sarandon
Susan SarandonOriginal
2025-01-04 19:21:41330browse

Salutations.

Codewars - Counting Duplicates

I'm posting Codewars challenges and my thought process in this series. I'm using JS and Node 18 whenever possible. Just for the sake of clarity, I'm making fair use of them.

For the "Counting duplicates" challenge, I'll start with this:

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

Seems... wordy. Wonder if this many words are actually aiming in the right direction. I'll give you a bit of time if you'd like to think for yourself.

3...

2...

1...

1/2...

1/4...

Ok, I think that's enough. No. Slang from the Bay Area made its way onto the web, so if I may: It's hella wrong.

The thing is, I was trying to find how many duplicates of the most duplicated letter are there. Turns out we need to answer how many duplicate types are there. Case insensitive.

AbC -> 0 -> no letter repeats
AbCC -> 1 -> "C" repeats, we don't care how many times
AbBCC -> 2 -> "b" and "c" repeat, we don't care how many times or the casing

We can take advantage of object literals in JS to create a counter for each letter. Then, one property could be "repetitions", which would be a counter that goes up ONLY whenever a letter shows up two times.

if (countTotal[letter]==2){
        countTotal.repetitions++;
      }

Full solution:

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

Took a while, it can be improved.

Take care. Drink water ???.

Previous

The above is the detailed content of Codewars - Counting Duplicates. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn