Given a string S of size N and Q queries. Every query consists of L and R ( 0 < = L < = R < N ) . The task is to print the character that occurs the maximum number of times in the given range. If there are multiple characters that occur maximum number of times then print the lexicographically smallest of them.
Note: S consists of lowercase English letters.
str = “geekss”,
Q = 2
str = “striver”,
Q = 3
Naive Approach: A naive approach is to iterate from L to R for every query and find the character that appears the maximum number of times using frequency array of size 26.
Time Complexity: O(max(R-L), 26) per query.
Efficient Approach: An efficient approach is to use a prefix sum array to efficiently answer the query. Let pre[i][j] stores the occurence of a character j till the i-th index. For every query ocuurence of a character j will be pre[r][j] – pre[l-1][j](if l > 0). Find the lexicographically smallest character that appears the maximum number of times by iterating the 26 lowercase letters.
Below is the implementation of the above approach:
Query 1: s Query 2: r Query 3: e
GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details
- Number of times the given string occurs in the array in the range [l, r]
- Longest subsequence where each character occurs at least k times
- Lexicographically largest subsequence such that every character occurs at least k times
- Queries to find total number of duplicate character in range L to R in the string S
- Queries for Nth smallest character for a given range in a string
- Number of permutations of a string in which all the occurrences of a given character occurs together
- Print the string after the specified character has occurred given no. of times
- Number of sub-strings that contain the given character exactly k times
- Count number of indices such that s[i] = s[i+1] : Range queries
- Replace every character of string by character whose ASCII value is K times more than it
- Print number of words, vowels and frequency of each character
- Maximum number of times str1 appears as a non-overlapping substring in str2
- Maximum number of characters between any two same character in a string
- String Range Queries to find the number of subsets equal to a given String
- Maximum length prefix of one string that occurs as subsequence in another