我想确定字符串中的未知模式,例如
S = 112468112468112468112468112468。
所以在这个字符串中,我们可以清楚地看到112468是重复模式。我搜索了 在google上找到一些算法来帮助我,但我只能看到一些在字符串中找到给定模式的文件,如Boyer-Moore算法等。
我现在要做的是找到这些重复的未知模式,
for(i=0;i<Length of String;i++)
{
for(j=i+1;j<Length of String;j++)
{
if(s[i]==s[j] && s[i+1]==s[j+1] && s[i+2]==s[j+2] && s[i+3]==s[j+3])
{
patternlength=j-i;
for(k=i;k<j;k++)
{
pattern[k]=s[i+k]
}
}
}
}
虽然这可以通过使用4个文字的比较窗口来处理给定字符串,但它可能不适用于其他字符串。有没有人知道更好的解决方案。
由于
答案 0 :(得分:1)
这不是模式匹配,这是模式识别,这是根本不同的,可能更难。
但是,可以使用(Python代码)找到此字符串显示的简单模式:
def find_repeated_pattern(s):
for i in xrange(1, len(s) / 2):
if s == s[:i] * (len(s) / i):
return s[:i]
这是一个天真的实现,因为它的所有字符串复制,但它可以在O( n ²)时间和恒定空间中工作。