Given, a String of Characters might be a mix of numbers, alphabets, and other special characters and we need to find the maximum occurring character and to do this we need to count the occurrence of each and every character and then the greatest one will be our answer.
Examples
Input:Helooo 1234
Output: 'o'
Input:9999 timesss
Output: '9'
Input:Matrixread@@@@@@@
Output: '@'
Solution Approach
In this case, everything is unique. We can’t generalize numbers or alphabets together each and every character has it’s own count and we need to add them up.
Note: Here we use ASCII size as 256 unlike 128 as here, we consider all kinds of characters not just numbers or alphabets.
Pseudocode
- First, we iterate through each and every character in the String
- We actually use something similar to a Hashmap
- So we create a Hashmap of the size of ASCII [256]
- And when we iterate through a character like ‘a’
- ASCII value of a is 97
- Increment a[97] with 1
- Repeat till the end of the String
- After every increment, we compare it with MAX
- And update MAX value accordingly
- Exit loop and print MAX character
Code
Maximum Occurring Character in a String C++
#include <iostream>
#include <string.h>
using namespace std;
char MaxOccuring(char *str)
{
int HashCount[256] = {0};
int length = strlen(str);
int max = 0;
char answer;
for (int i = 0; i < length; i++)
{
HashCount[str[i]]++;
if (max < HashCount[str[i]])
{
max = HashCount[str[i]];
answer = str[i];
}
}
return answer;
}
int main()
{
char str[] = "AA999####@@@";
cout <<" Maximum Occurring Character in a String : "
<< MaxOccuring(str);
}
Output
Maximum Occurring Character in a String : #
Conclusion
I’ve tried to explain the problem in a very simple way, this technique will be useful in many ways, do have a look at HashMap it really helps a lot. This post part of my #30DaysChallenge to create a blog every day on what I learn every day.
Happy Coding – Abhiram Reddy