How to detect duplicate letters in a string in Python

Detecting duplicate letters in a string is a common task in Python programming. It can be useful for various applications, such as text analysis, data cleaning, and security. In this answer, we'll explore several Python methods for detecting duplicate letters in a string.

Method 1: Using a loop

One simple way to detect duplicate letters in a string is to use a loop to iterate over each letter and check if it appears more than once.

Coding example

def find_duplicates(string):
# Initialize an empty list to store duplicate letters
duplicates = []
# Loop over each letter in the string
for letter in string:
# Check if the letter appears more than once and if it's not already in the duplicates list
if string.count(letter) > 1 and letter not in duplicates:
# Append the letter to the duplicates list
duplicates.append(letter)
# Return the list of duplicate letters
return duplicates
#test
string = "thannk youu"
duplicates = find_duplicates(string)
print(duplicates)

Explanation

  • Line 1: We define a function called find_duplicates that takes a string as input.

  • Line 3: We initialize an empty list to store any duplicate letters we find.

  • Line 6: Next, we use a for loop to iterate over each letter in the string.

  • Line 8: We check if the count of the letter in the string is greater than 1 (i.e., it appears more than once) and if the letter is not already in the duplicates list.

  • Line 10: If both conditions are true, we append the letter to the duplicates list.

  • Line 13: Finally, we return the list of duplicate letters.

  • Line 16: We define a string "thannk youu".

  • Line 17: The returned list of duplicate letters is assigned to the duplicates variable.

  • Line 18: We print the duplicates output to the console.

Method 2: Using a set

Using a set is another method for finding duplicate letters in a string. We can convert the string to a set to eliminate duplicates and then contrast the length of the set with the length of the original string. We do this because a set is an unordered collection of distinct elements, so if the lengths differ, we can infer that the string contains duplicate letters.

Coding example

def find_duplicates(string):
return list(set([letter for letter in string if string.count(letter) > 1]))
string = "hello world"
duplicates = find_duplicates(string)
print(duplicates)

Explanation

  • Line 1: We define the find_duplicates function, which takes a string as input.

  • Line 2: The string.count(letter) method counts the number of times a particular letter appears in the string. Setting string.count(letter) > 1 checks if the letter appears more than once in the string. Setting [letter for letter in string if string.count(letter) > 1] creates a list of all the letters in the string that appear more than once. Inputting set([letter for letter in string if string.count(letter) > 1]) converts the list of duplicate letters to a set, removing duplicates. Finally, list(set([letter for letter in string if string.count(letter) > 1])) converts the set back to a list and returns the list of duplicate letters.

  • Line 3: We define a string "hello world."

  • Line 4: The returned list of duplicate letters is assigned to the duplicates variable.

  • Line 5: We print the duplicates output to the console.

Method 3: Using the Counter class

Utilizing the Counter class from the collections module is a third method for finding duplicate letters in a string. To determine how frequently an element appears in a list or string, we can use the Counter class, a subclass of the dictionary class.

Coding example

from collections import Counter
def find_duplicates(string):
counter = Counter(string)
return [letter for letter in counter if counter[letter] > 1]
string = "access card"
duplicates = find_duplicates(string)
print(duplicates)

Explanation

  • Line 1: We import the Counter class from the collections module.

  • Line 3: We define a function called find_duplicates, which takes a string as input.

  • Line 4: We create a Counter object from the string, which counts the frequency of each letter.

  • Line 5: Next, we use a list comprehension to iterate over each letter in the Counter object and create a list of letters that appear more than once.

  • Line 6: We define a string "access card."

  • Line 7: We assign the returned list of duplicate letters to the duplicates variable.

  • Line 8: We print the duplicates output to the console.

Conclusion

In this Answer, we discussed three methods to detect duplicate letters in a string in Python. When using a loop to detect duplicate letters, we iterate through the string character by character and keep track of the frequency of each letter. We can also use a set, which is a more efficient way to detect duplicate letters. We eliminate duplicate characters by converting the string into a set. Since sets only contain unique elements, the size of the set will be smaller than the length of the string if there are duplicates. Lastly, method 3 is also efficient and can handle large strings, but it requires the collections module, which may not be available in all Python environments.

Free Resources

Copyright ©2025 Educative, Inc. All rights reserved