Fewest changes, no equal neighbours
HardStrings15 min
Write a function minChanges(s) that returns the smallest number of changes you need so that no two characters next to each other in the string s are equal.
- One change replaces one character with any other character.
shas 0 to 10000 characters. Characters are compared exactly:'a'and'A'are different. Any character can appear: letters, digits, spaces, punctuation like'*'or'!'.- Return a whole number. For an empty string and a string with no equal neighbours return
0. - The rule: split the string into runs of equal characters next to each other. A run of length
Lneeds Math.floor(L / 2) changes: in'aaaa'you change the second and the fourtha('abab'), so 2 changes. Add up the numbers for all runs.
One loop over the string is enough: count the length of the current run and add its changes when the run ends.
Examples
minChanges('aab')Returns 1
minChanges('aaaa')Returns 2
minChanges('aabbcc')Returns 3
Asked at Cred · Source
Loading the editor...
- Input
minChanges('aab')Expected1 - Input
minChanges('aaaa')Expected2 - Input
minChanges('abc')Expected0
Hidden tests run on Submit