javascriptstringrun-length-encoding

run length encoding for a string in JavaScript


I'm a new developer and got some questions from a test this week and coundn't find a way to solve this one. Any ideas?

The problem I believe is to sort a Javascript string which you have to convert the letters in a row to a new string which adds the times the letter is reapeated to the string; example:

For the string = 'AAABBBBCCX9999!!!!!!**' it should return string = '3A4B2CX496!2*'

I tried some strings and arrays methods but didn't come close. I'm not in a hurry since the test is gone. But would be fun see it resolved; thanks everyone!

I'm still learning so thank you all for your answers and feedback about how to use stack overflow.


Solution

  • It works by matching on the string for all sequences of consecutive characters, giving you an array of each group of consecutive characters, which are then each mapped to a new string of the group's length and the first character put together (AAA becomes 3A ('AAA'.length + 'AAA'[0])). Then each string is glued back together again with .join('').

    const seq = 'AAABBBBCCX9999!!!!!!**'
      .match(/(.)\1*/g).map(s => s.length + s[0]).join('');
      
    console.log(seq);