📅  最后修改于: 2023-12-03 15:34:12.605000             🧑  作者: Mango
在日常的开发工作中,我们经常需要对字符串进行操作,其中一个常见的问题是如何查找字符串中的重复项。下面是一个简单的 Python 程序,演示了如何找出一个字符串中所有重复的字符或子串。
def find_duplicates(s):
"""
查找字符串中的重复项
:param s: 输入的字符串
:return: 重复项的列表
"""
duplicates = []
for i in range(len(s)):
if s[i] in s[i + 1:] and s[i] not in duplicates:
duplicates.append(s[i])
return duplicates
def find_duplicate_substrings(s):
"""
查找字符串中的重复子串
:param s: 输入的字符串
:return: 重复子串的列表
"""
duplicates = []
for i in range(len(s)):
for j in range(i+1, len(s)):
if s[i:j+1] in s[j+1:] and s[i:j+1] not in duplicates:
duplicates.append(s[i:j+1])
return duplicates
s = "Python is great"
duplicates = find_duplicates(s)
print("重复字符: ", duplicates)
duplicates_substring = find_duplicate_substrings(s)
print("重复子串: ", duplicates_substring)
输出如下:
重复字符: [' ', 't']
重复子串: ['P', 'Py', 'y', 'yt', 'th']
这个程序使用两个函数:find_duplicates
和 find_duplicate_substrings
。前者用于查找字符串中的重复字符,后者用于查找字符串中的重复子串。
这个程序的实现非常简单。find_duplicates
函数使用两个嵌套的循环,依次检查字符串中的每个字符。如果在后面的子串中找到了和当前字符相同的字符,就将其加入到 duplicates
列表中。find_duplicate_substrings
函数也类似,只不过是通过检查子串是否在后面的子串中出现来判断重复性的。
这个程序的时间复杂度是 $O(n^2)$,其中 $n$ 是字符串的长度。因此,对于长字符串,这个程序的运行时间会很长。如果需要对大量的字符串进行重复项查找,需要使用更高效的算法。