使用Rabin-Karp算法寻找n个字符串的最大公共子串的算法

-1 投票
0 回答
23 浏览
提问于 2025-04-12 05:14

我有一段代码是用来找多个字符串中最长的公共子串的,但效果不是很好。请问这个算法能不能用哈希函数重写,比如说Rabin-Karp函数?

def f(strings):
    sub = ''
    if len(strings) > 1 and len(strings[0]) > 0:
        for i in range(len(strings[0])):
            for j in range(len(strings[0])-i+1):
                if j > len(sub) and is_sub(strings[0][i:i+j], strings):
                    sub = strings[0][i:i+j]
    return sub

def is_sub(sub, strings):
    if len(strings) < 1 and len(sub) < 1:
        return False
    for i in range(len(strings)):
        if sub not in strings[i]:
            return False
    return True

n = int(input())
strings = [input() for i in range(n)]
print (f(strings))

我试过用Rabin-Karp函数来检查某个子串是否在一个字符串里,但完全没有效果。如果有人能提供一个更有效的解决方案,那就太好了。

0 个回答

暂无回答

撰写回答