Python program to equal character frequencies
Given a String, ensure it has equal character frequencies, if not, equate by adding required characters.
Input : test_str = ‘geeksforgeeks’
Output : geeksforgeeksggkkssfffooorrr
Explanation : Maximum characters are 4 of ‘e’. Other character are appended of frequency 4 – (count of chars).Input : test_str = ‘geksforgeeks’
Output : geeksforgeeksggksffoorr
Explanation : Maximum characters are 3 of ‘e’. Other character are appended of frequency 3 – (count of chars).
Method #1 : Using count() + max() + loop
In this, we get the frequency of the maximum occurring character, and then append each character to match the maximum character frequency.
Python3
# Python3 code to demonstrate working of # Equal character frequencies # Using max() + count() + loop # initializing string test_str = 'geeksforgeeks' # printing original string print ( "The original string is : " + str (test_str)) # getting maximum frequency character max_freq = max ([test_str.count(ele) for ele in test_str]) # equating frequencies res = test_str for chr in test_str: # if frequencies don't match max_freq if res.count( chr ) ! = max_freq: res + = chr * (max_freq - test_str.count( chr )) # printing result print ( "Equal character frequency String : " + str (res)) |
The original string is : geeksforgeeks Equal character frequency String : geeksforgeeksggkkssfffooorrr
Time Complexity: O(n)
Auxiliary Space: O(n)
Method #2 : Using Counter() + loop
Similar to the above, the difference being Counter() is used to get the maximum element count.
Python3
# Python3 code to demonstrate working of # Equal character frequencies # Using Counter() + loop from collections import Counter # initializing string test_str = 'geeksforgeeks' # printing original string print ( "The original string is : " + str (test_str)) # getting maximum frequency character # using Counter() freq_dict = Counter(test_str) max_freq = test_str.count( max (freq_dict, key = freq_dict.get)) # equating frequencies res = test_str for chr in test_str: # if frequencies don't match max_freq if res.count( chr ) ! = max_freq: res + = chr * (max_freq - test_str.count( chr )) # printing result print ( "Equal character frequency String : " + str (res)) |
The original string is : geeksforgeeks Equal character frequency String : geeksforgeeksggkkssfffooorrr
Time Complexity: O(n)
Auxiliary Space: O(n)