如何求两字串的最长公共子串
来源:互联网 发布:天下事有难易乎翻译 编辑:程序博客网 时间:2024/05/21 10:26
此算法的时间复杂度我还没想清楚,
代码如下:
#include<stdio.h>
#include<string.h>
char * maxsamesubstring(char *s1,char *s2)
{
int i,j,len,maxlen,index,maxindex;
maxlen=0; //初始化最长公共子串的长度
maxindex=0; //初始化最长公共子串的位置
len=0; //当前公共子串的长度
for(i=0;s1[i]!='/0';i++)
for(j=0;s2[j]!='/0';j++)
if(s1[i+len]==s2[j])
{
if(!len)
{
index=j; //记下公共子串的起始位置
}
len++;
}
else if(len)
{
if(maxlen<len) //经过一次扫描找到了最长公共子串
{
maxlen=len;
maxindex=index;
}
len=0; //进行下一次的扫描
j=index; //下一次的扫描应从index的后一个字符开始
}
char *p=new char[maxlen+1];
strncpy(p,s2+maxindex,maxlen); //把最长公共字符串复制到p所指的空间
p[maxlen]='/0'; //置串结束标志
return p;
}
int main()
{
char *s1="president hujintao",*s2="hujin hujintao",*sub;
sub=maxsamesubstring(s1,s2);
printf("%s/n",sub);
delete[] sub;
return 0;
}
2010-10-14
- 如何求两字串的最长公共子串
- 求最长公共字串的两种方法
- 求两字符串的最长公共连续子串
- 一个求两字串最长子序列的java算法
- 重复子串问题(四):求两个字符串的最长公共字串
- 求两字符串最长公共连续子串---C++编程
- 两字符串求最长公共子字符串
- 求两字符串最长公共子序列
- 最长公共子序列 && 最长公共字串
- 利用后缀数组求字符串的最长重复子串的算法 利用二维数组求两个字符串的最长公共字串(动态规划)
- 求最长公共子串
- 求最长公共子串
- 求最长公共子串
- 求最长公共子串
- 求最长公共子串
- 求最长公共子串
- 求最长公共子串
- poj 2774 求两字符串的最长公共子串 后缀数组
- 【Herm程序员开发指导】目录
- uImage,zimage,bzimage,vmlinux,vmlinuz
- js数字格式化
- oracle函数
- C语言内存分配
- 如何求两字串的最长公共子串
- RedHat 5.4卸载oracle 10g
- 学习命令解释器 sh
- php __set() __get()
- Eclipse中使用Junit插件测试
- Unit tests with JUnit
- SQL 架构剖析
- List queries' speed tests.
- 内存中的堆与栈