Given a string S, the task is to find the largest lexicographical string with no more than K consecutive occurrence of an element by either re-arranging or deleting the elements.
Input: S = “baccc”
K = 2
Output: Result = “ccbca”
Explanation: Since K=2, a maximum of 2 same characters can be placed consecutively.
No. of ‘c’ = 3.
No. of ‘b’ = 1.
No. of ‘a’ = 1.
Since the largest lexicographical string has to be printed, therefore, the answer is “ccbca”.
Input: S = “xxxxzaz”
K = 3
Output: result = “zzxxxax”
- Form a frequency array of size 26, where index i is chosen using (character in string – ‘a’).
- Initialize an empty string to store corresponding changes.
- for i=25 to 0, do:
- If frequency at index i is greater than k, then append (i + ‘a’) K-times. Decrease frequency by K at index i.find the next greatest priority element and append to answer and decrease frequency at respective index by 1.
- If frequency at index i is greater than 0 but less than k, then append (i + ‘a’) times it’s frequency.
- If frequency at index i is 0, then that index cannot be used to form an element and therefore check for next possible highest priority element.
Time Complexity: O(N)
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.
- Lexicographical smallest number after at most K consecutive swaps
- Generate a Binary String without any consecutive 0's and at most K consecutive 1's
- Largest lexicographic array with at-most K consecutive swaps
- Lexicographical concatenation of all substrings of a string
- Lexicographical Maximum substring of string
- K-th lexicographical string of given length
- Print all the combinations of a string in lexicographical order
- Find the k-th string in lexicographical order consisting of n-2 X's and 2 Y's
- Print all lexicographical greater permutations of a given string
- Length of longest consecutive ones by at most one swap in a Binary String
- Minimum possible value T such that at most D Partitions of the Array having at most sum T is possible
- Print all longest common sub-sequences in lexicographical order
- Sort the words in lexicographical order in Python
- Find the lexicographical next balanced bracket sequence
- Print all distinct circular strings of length M in lexicographical order
- Lexicographical smallest alternate Array
- Lexicographical ordering using Heap Sort
- Generate all numbers up to N in Lexicographical Order
- Count of Root to Leaf Paths consisting of at most M consecutive Nodes having value K
- Lexicographically smallest array after at-most K consecutive swaps