Open In App

Python | Maximum frequency character in String

This article gives us the methods to find the frequency of maximum occurring character in a python string. This is quite important utility nowadays and knowledge of it is always useful. Let’s discuss certain ways in which this task can be performed. 

Method 1 : Naive method + max() 

In this method, we simply iterate through the string and form a key in a dictionary of newly occurred element or if element is already occurred, we increase its value by 1. We find maximum occurring character by using max() on values. 




# Python 3 code to demonstrate
# Maximum frequency character in String
# naive method
 
# initializing string
test_str = "GeeksforGeeks"
 
# printing original string
print ("The original string is : " + test_str)
 
# using naive method to get
# Maximum frequency character in String
all_freq = {}
for i in test_str:
 if i in all_freq:
  all_freq[i] += 1
 else:
  all_freq[i] = 1
res = max(all_freq, key = all_freq.get)
 
# printing result
print ("The maximum of all characters in GeeksforGeeks is : " + str(res))

Output : 
The original string is : GeeksforGeeks
The maximum of all characters in GeeksforGeeks is : e

Time Complexity: O(n)
Auxiliary Space: O(n)

Method 2 : Using collections.Counter() + max() 

The most suggested method that could be used to find all occurrences is this method, this actually gets all element frequency and could also be used to print single element frequency if required. We find maximum occurring character by using max() on values. 




# Python 3 code to demonstrate
# Maximum frequency character in String
# collections.Counter() + max()
from collections import Counter
 
# initializing string
test_str = "GeeksforGeeks"
 
# printing original string
print ("The original string is : " + test_str)
 
# using collections.Counter() + max() to get
# Maximum frequency character in String
res = Counter(test_str)
res = max(res, key = res.get)
 
# printing result
print ("The maximum of all characters in GeeksforGeeks is : " + str(res))

Output : 
The original string is : GeeksforGeeks
The maximum of all characters in GeeksforGeeks is : e

Time Complexity: O(n)
Auxiliary Space: O(n)

Method 3 : Using a dictionary




# initializing string
test_str = "GeeksforGeeks"
 
# printing original string
print ("The original string is : " + test_str)
 
# creating an empty dictionary
freq = {}
 
# counting frequency of each character
for char in test_str:
    if char in freq:
        freq[char] += 1
    else:
        freq[char] = 1
 
# finding the character with maximum frequency
max_char = max(freq, key=freq.get)
 
# printing result
print("The maximum of all characters in GeeksforGeeks is : " + str(max_char))

Output
The original string is : GeeksforGeeks
The maximum of all characters in GeeksforGeeks is : e

Time Complexity: O(n)
Auxiliary Space: O(n)

Method 4: Using a generator expression:

This approach uses a generator expression with the max function to find the character with the maximum frequency. The lambda function returns the frequency count for each character in the string, and the max function returns the character with the maximum frequency. This approach may be less efficient for longer strings because it has to count the frequency of each character multiple times.




test_str = "GeeksforGeeks"
res = max(test_str, key=lambda x: test_str.count(x))
print(res)

Output
e

Time Complexity: O(n)
Auxiliary Space: O(1)


Article Tags :