Given a string str. The task is to count the number of all different strings possible if two consecutive same characters of the string can be replaced by one different character.
Following properties were observed for replacing two equals characters at a time:
- If for string = “aaa” of length 3 we replace two “aa” with one character say “K” then the total number of different possible strings including the original string is:- Ka, aK, aaa. Therefore the number of different strings follows the property of Fibonacci Number of the length of the consecutive characters in the string.
- If for string = “aaadefyyyy” then the total number of possible different strings is equaled to the product of combinations of string “aaa” and “yyyy” by replacing the two consecutive characters at a time.
Hence from the above two observations, the count of different possible strings with N consecutive characters is given by N-th Fibonacci Number. Therefore, the total number of different possible strings for the given string str is equal to the product of count of different possible strings for every substring with all same character.
Following are the steps:
- Count(say cnt) the number of consecutive characters which are same in the given string str.
- To count the different possible strings for the count cnt, find the value of Fibonacci Sequence at cnt.
- Repeat the above steps for all the consecutive characters in the given string str.
- The total count of different possible strings is equals to the product of all the value of Fibonacci Sequence obtained for every count of consecutive characters.
Below is the implementation of the above approach:
Time Complexity: O(N), where N is the length of the given string.
- Count possible binary strings of length N without P consecutive 0s and Q consecutive 1s
- Replacing an element makes array elements consecutive
- Check whether two strings contain same characters in same order
- Print all possible combinations of the string by replacing '$' with any other digit from the string
- Maximum possible GCD after replacing at most one element in the given array
- Maximum Subarray Sum possible by replacing an Array element by its Square
- Maximize sum of squares of array elements possible by replacing pairs with their Bitwise AND and Bitwise OR
- Maximize length of increasing subsequence possible by replacing array element by nearest primes
- Count of distinct Strings possible by swapping prefixes of pairs of Strings from the Array
- Count of binary strings of length N with even set bit count and at most K consecutive 1s
- Last element remaining by deleting two largest elements and replacing by their absolute difference if they are unequal
- Count of integers obtained by replacing ? in the given string that give remainder 5 when divided by 13
- Maximize count of equal numbers in Array of numbers upto N by replacing pairs with their sum
- Minimize swaps required to maximize the count of elements replacing a greater element in an Array
- Queries to print count of distinct array elements after replacing element at index P by a given element
- Minimum number of digits to be removed so that no two consecutive digits are same
- Minimize total cost without repeating same task in two consecutive iterations
- Count consecutive pairs of same elements
- Sub-strings of length K containing same character
- Program to build a DFA to accept strings that start and end with same character
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.