Table of Contents
In the given string find the maximum occurring character
Maximum occurring character: character which is coming more number of times. (Case sensitivity is present, “D” and “d” are not the same.)
Note: If there are more than one character repeated more than once then it prints the first most repeated character.
Example
a) Input string = “sachin”
count of ‘s’ = 1
count of ‘a’ = 1
count of ‘c’ = 1
count of ‘h’ = 1
count of ‘i’ = 1
count of ‘n’ = 1
Therefore, Print “No element is repeated”
b) Input string = “Hello”
count of ‘H’ = 1
count of ‘e’ = 1
count of ‘l’ = 2
count of ‘o’ = 1
Therefore, Print “Most repeated element is l and it occurred 2 times”
c) Input string = “saAchin”
count of ‘s’ = 1
count of ‘a’ = 1
count of ‘A’ = 1
count of ‘c’ = 1
count of ‘h’ = 1
count of ‘i’ = 1
count of ‘n’ = 1
Therefore, Print “No element is repeated”
d) Input string = “ccaab”
count of ‘c’ = 2
count of ‘a’ = 2
count of ‘b’ = 1
count of c and a is same but c is coming first so, it prints c.
Therefore, Print “Most repeating element is c”
Algorithm
Time Complexity : O(n)
Space Complexity : O(1)
Step 1 : Create an array of size 256 with all zeroes. (256 ASCII characters)
Step 2 : Each element in the array is the count of the character with the ASCII value as index in the array. (ASCII value as key)
Step 3 : Increment count whenever we found a character at the index of its ASCII value in the index.
a) Traverse the whole string.
b) Update count. If “a” comes array[96] = array[96] + 1 (96 is ASCII value of a)
Step 4 : Initialize max_occurrence= INT_MIN, and find the max_occurrence in the array (max_occurrence comes for character with maximum count) by running a loop and comparing with elements in the array.
Step 5 : Finally print the character with max_occurrence(maximum count)and print the max_occurrence.
Algorithm working
C++ Program
#include <bits/stdc++.h> using namespace std; #define NO_OF_CHARS 256 int main() { string s; //a string cin>>s; int arr[NO_OF_CHARS] = {0}; // stores the count of each character in the string for(int i = 0; i < s.size(); i++) //treat element's ASCII value as key and i?ncrement the count arr[(int)s[i]]++; int max_occurence = INT_MIN; //store the maximum occurence of a character char most_repeated; //final most repeating character for(int i=0; i<s.size(); i++) { if(arr[s[i]] > max_occurence) //update the maximum repeating character { most_repeated = s[i]; max_occurence = arr[s[i]]; } } if(max_occurence>1){ cout<<"Most repeating character is "<<" ' "<<most_repeated<<" ' "<<" repeating " <<max_occurence<<" times\n"; return 0; } else if(max_occurence = 1) { cout<<"No character is repeated\n"; } }