gpt4 book ai didi

c - 查找字符串是否是 C 中的迭代子字符串算法?

转载 作者:太空狗 更新时间:2023-10-29 16:44:40 25 4
gpt4 key购买 nike

问题描述

我有一个字符串 S。我如何找到该字符串是否遵循 S = nT

例子:

函数应该返回真如果

1) S = "abab"  
2) S = "abcdabcd"
3) S = "abcabcabc"
4) S = "zzxzzxzzx"

但是如果 S="abcb" 返回 false。

我想也许我们可以在 S 的子串上重复调用 KMP 然后再决定。

即:

对于“abab”:在“a”上调用 KMP。它返回 2(两个实例)。现在 2*len("a")!=len(s)

在“ab”上调用 KMP。它返回 2。现在 2*len("ab")==len(s) 所以返回 true

你能推荐更好的算法吗?

最佳答案

我可以想到一个启发式方法,如果 Len(original string)/Len of(sub string) 是正整数,则仅在子字符串上调用 KMP。

同时子串的最大长度必须小于N/2。

编辑

使用这些启发式方法我编写了以下 python 代码,因为我的 C 此刻已经生锈了

oldstr='ABCDABCD'    

for i in xrange(0,len(oldstr)/2):
newslice=oldstr[0:i+1]
if newslice*(len(oldstr)/len(newslice)) == oldstr:
print 'pattern found', newslice
break

关于c - 查找字符串是否是 C 中的迭代子字符串算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4696781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com