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!
CodePudding user response:
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);