📜  python 查找字符串中的重复项 - Python (1)

📅  最后修改于: 2023-12-03 15:34:12.605000             🧑  作者: Mango

Python 查找字符串中的重复项

在日常的开发工作中,我们经常需要对字符串进行操作,其中一个常见的问题是如何查找字符串中的重复项。下面是一个简单的 Python 程序,演示了如何找出一个字符串中所有重复的字符或子串。

查找字符串中的重复项的 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_duplicatesfind_duplicate_substrings。前者用于查找字符串中的重复字符,后者用于查找字符串中的重复子串。

这个程序的实现非常简单。find_duplicates 函数使用两个嵌套的循环,依次检查字符串中的每个字符。如果在后面的子串中找到了和当前字符相同的字符,就将其加入到 duplicates 列表中。find_duplicate_substrings 函数也类似,只不过是通过检查子串是否在后面的子串中出现来判断重复性的。

这个程序的时间复杂度是 $O(n^2)$,其中 $n$ 是字符串的长度。因此,对于长字符串,这个程序的运行时间会很长。如果需要对大量的字符串进行重复项查找,需要使用更高效的算法。