Open In App

Python – Capitalize repeated characters in a string

Examples:

Input: programming language
Output: pRoGRAMMiNG lANGuAGe
Explanation: r,m,n,a,g are repeated elements



Input: geeks for geeks
Output: GEEKS for GEEKS
Explanation: g,e,k,s are repeated elements

Approach 1:



Implementation:




# function for changing the
# repeated characters to uppercase
def RepeatedUpper(s):
 
    # declaring dictionary
    dic = {}
 
    # Traversing the string
    for i in s:
 
        # If the character is already
        # present in dictionary then increment
        # the frequency of the character
        if i in dic:
            dic[i] = dic[i]+1
 
   # If the character is not present in
   # the dictionary then inserting
   # the character in the dictionary
        else:
            dic[i] = 1
    ans = ''
 
    # traversing the string
    for i in s:
 
        # if the frequency of the character is
        # greater than one
        if dic[i] > 1:
 
            # change into uppercase
            i = i.upper()
 
        # appending each character to the ans
        ans = ans+i
    return ans
 
 
# Driver code
s = 'geeks for geeks'
# function call
print(RepeatedUpper(s))

Output
GEEKS for GEEKS

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

Approach 2:

Using count() function.If count is greater than 1 then the character is repeated.Later on used upper() to convert to uppercase




s = "programming language"
new_str=""
for i in s:
    if(i!="" and s.count(i)>1):
        new_str+=i.upper()
    else:
        new_str+=i
print(new_str)
        

Output
pRoGRAMMiNG lANGuAGe

Time Complexity: O(n2) -> (count function + loop)
Auxiliary Space: O(n)

Approach 3: Using replace() and len() methods




#Capitalize repeated letters
s = "programming language"
length=len(s)
new_str=""
for i in s:
    x=s.replace(i,"")
    if(len(x)!=length-1):
        new_str+=i.upper()
    else:
        new_str+=i
print(new_str)

Output
pRoGRAMMiNG lANGuAGe

Time Complexity: O(n2) -> (replace function + loop)
Auxiliary Space: O(n)

Approach #4 : Using Counter() function




from collections import Counter
s = "programming language"
new_str = ""
freq = Counter(s)
for i in s:
    if(i != "" and freq[i] > 1):
        new_str += i.upper()
    else:
        new_str += i
print(new_str)

Output
pRoGRAMMiNG lANGuAGe

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

Approach #5 : Using List Comprehension

In this approach, we first create a Counter object to store the frequency of each character in the string. Then, we use a list comprehension to iterate over the characters in the string, and for each character, we check if its frequency is greater than 1. If it is, we convert it to uppercase using upper(). Finally, we use join() to concatenate the characters and return the result as a single string.




from collections import Counter
 
def capitalize_repeated_chars(s):
    freq = Counter(s)
    return "".join([char.upper() if freq[char] > 1 else char for char in s])
 
s = "programming language"
print(capitalize_repeated_chars(s))

Output
pRoGRAMMiNG lANGuAGe

Time complexity: O(n), where n is the length of the input string.

Auxiliary space: O(n), for storing the frequency of each character in the Counter object.

Approach #6 : Using operator.countOf() method




s = "programming language"
new_str=""
import operator
for i in s:
    if(i!="" and operator.countOf(s,i)>1):
        new_str+=i.upper()
    else:
        new_str+=i
print(new_str)

Output
pRoGRAMMiNG lANGuAGe

Time complexity: O(n), where n is the length of the input string.

Auxiliary space: O(n), for storing the frequency of each character.


Article Tags :