Code Lab

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.
  • s has 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 L needs Math.floor(L / 2) changes: in 'aaaa' you change the second and the fourth a ('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...
  1. InputminChanges('aab')
    Expected1
  2. InputminChanges('aaaa')
    Expected2
  3. InputminChanges('abc')
    Expected0

Hidden tests run on Submit.