Python 程序查找字符串中所有重复字符
本文将教你如何编写一个 Python 程序来查找字符串中所有重复的字符。
在字符串中重复出现的字符称为重复字符。当我们提到打印字符串中的重复字符时,我们的意思是我们将打印字符串中出现两次以上的所有字符,包括空格。
输入-输出场景
以下是查找字符串中所有重复字符的输入-输出场景:
Input: TutorialsPoint Output: t, o, i
我们可以看到,给定字符串“TutorialsPoint”中的重复字符是“t”重复了“3”次,“o”重复了“2”次,“i”重复了“2”次。
算法
以下算法将搜索字符串中的重复字符:
创建一个字符串并将其存储在一个变量中。
要查找重复字符,请使用两个循环。使用外部循环选择一个字符并将变量 count 设置为 1
为了将所选字符与字符串中剩余的字符进行比较,将使用内部循环。
如果找到匹配项,则将 count 增加 1。
如果内部循环完成后某个字符的 count 大于 1,则字符串中存在重复字符。
打印字符计数和所有重复字符。
结束
我们可以通过多种方式实现上述算法,让我们逐一看看:
使用循环
要反复遍历序列,请使用 for 循环。此功能更像是在其他面向对象编程语言中看到的迭代器方法,并且不太像在其他编程语言中找到的 for 关键字。
示例
以下是如何使用循环查找字符串中所有重复字符的示例:
string = "Welcome to TutorialsPoint family"; print("All the duplicate characters in the string are: "); # Counting every characters of the string for s in range(0, len(string)): count = 1; for t in range(s+1, len(string)): if(string[s] == string[t] and string[s] != ' '): count = count + 1; # setting the string t to 0 to avoid printing the characters already taken string = string[:t] + '0' + string[t+1:]; # If the count is greater than 1, the character is considered as duplicate if(count > 1 and string[s] != '0'): print(string[s]," - ",count);
输出
以下是上述代码的输出:
All the duplicate characters in the string are: e - 2 l - 3 o - 4 m - 2 t - 3 o - 3 t - 2 o - 2 i - 3 a - 2 l - 2 i - 2
使用列表和 count() 方法
可以使用 count() 函数 统计字符串中字符或子字符串出现的频率 Python 语言。作为返回值,它仅提供出现次数的计数。
示例 2
以下是如何使用 count() 方法查找字符串中所有重复字符的示例:
# initializing the string str = "tutorialspoint" # initializing a list to add all the duplicate characters duplicate_char = [] for character in str: # check whether there are duplicate characters or not # returning the frequency of a character in the string if str.count(character) > 1: # append to the list if it is already not present if character not in duplicate_char: duplicate_char.append(character) print(*duplicate_char)
输出
以下是上述代码的输出:
t o i
使用 Counter() 方法
Python 的 dict 的 Counter 子类专门用于计数可哈希对象。它是一个 字典,其中数字是值,对象是键。在使用 Counter 时,通常会将可哈希对象的序列或可迭代对象作为输入传递给类的构造函数。
示例
使用 Counter() 方法,创建一个字典,其中字符串作为键,频率作为值。之后,创建一个临时变量并打印从值大于 1 的键派生的每个索引,如下例所示:
from collections import Counter def duplicate_character(input): # creating the dictionary by using counter method having strings as key and its frequencies as value string = Counter(input) # Find the number of occurrence of a character and getting the index of it. for char, count in string.items(): if (count > 1): print(char) # Driver code if __name__ == "__main__": input = 'TutorialsPoint' duplicate_character(input)
输出
以下是上述代码的输出:
t o i