Given a lowercase characters string str of size N. In one operation any character can be changed into some other character. The task is to find the minimum number of operations such that no two adjacent characters are equal.
Input: Str = “caaab”
Change the second a to any other character, let’s change it to b. So the string becomes “cabab”. and no two adjacent characters are equal. So minimum number of operations is 1.
Input: Str = “xxxxxxx”
Replace ‘x’ at index 1, 3 and 5 to ‘a’, ‘b’, and ‘c’ respectively.
Approach: The idea is similar to implement sliding window technique. In this, we need to find the non-overlapping substrings that has all the characters same. Then the minimum operations will be the sum of the floor of half the length of each substring.
- There is no need to change a character directly. Instead consider all substring started from any index having only one character.
- Now consider any substring of length l such that all the characters of that substring are equal then change floor ( l / 2) characters of this substring to some other character.
- So just iterate over all the characters of the string from any character ch find out the maximal length of the substring such that all the characters in that substring are equal to the character ch.
- Find the length l of this substring and add floor ( l / 2) to the ans.
- After that start from the character just next to the end of the above substring.
Time Complexity: O (N)
Auxiliary Space: O (1)
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
- Minimum replacements to make adjacent characters unequal in a ternary string
- Minimum replacements to make adjacent characters unequal in a ternary string | Set-2
- Minimum number of replacements to make the binary string alternating | Set 2
- Minimum replacements such that the difference between the index of the same characters is divisible by 3
- Convert string X to an anagram of string Y with minimum replacements
- Minimum string such that every adjacent character of given string is still adjacent
- Form lexicographically smallest string with minimum replacements having equal number of 0s, 1s and 2s
- Convert given string to another by minimum replacements of subsequences by its smallest character
- String with k distinct characters and no same characters adjacent
- Permutation of a string with maximum number of characters greater than its adjacent characters
- Rearrange the characters of the string such that no two adjacent characters are consecutive English alphabets
- Make the string lexicographically smallest and non palindromic by swapping of adjacent pair of characters
- Minimum characters to be replaced to make frequency of all characters same
- Min flips of continuous characters to make all characters same in a string
- Maximum and minimum sums from two numbers with digit replacements
- Minimize the number of replacements to get a string with same number of 'a', 'b' and 'c' in it
- Minimum cost to remove the spaces between characters of a String by rearranging the characters
- Minimum characters to be added at front to make string palindrome
- Minimum number of characters to be removed to make a binary string alternate
- Count numbers in range such that digits in it and it's product with q are unequal
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.