(美团网)两个字符串的最长公共子串
来源:互联网 发布:淘宝旺旺子账号 编辑:程序博客网 时间:2024/06/16 03:50
c[i][j]表示Xi和Yi的最大Substring的长度,比如
X = <y, e, d, f> Y = <y, e, k, f>
c[1][1] = 1 c[2][2] = 2 c[3][3] = 0 c[4][4] = 1
动态转移方程为:
如果xi == yj, 则 c[i][j] = c[i-1][j-1]+1
如果xi ! = yj, 那么c[i][j] = 0
最后求Longest Common Substring的长度等于max{ c[i][j], 1<=i<=n, 1<=j<=m}
#include "stdio.h"#include "string.h"#include "stdlib.h"int longest_common_substring(char *str1, char *str2){int i,j,k,len1,len2,max,x,y;len1 = strlen(str1);len2 = strlen(str2);int **c = new int*[len1+1];for(i = 0; i < len1+1; i++)c[i] = new int[len2+1];for(i = 0; i < len1+1; i++)c[i][0]=0; //第0列都初始化为0for(j = 0; j < len2+1; j++)c[0][j]=0; //第0行都初始化为0 max = -1;for(i = 1 ; i < len1+1 ; i++){for(j = 1; j < len2+1; j++){if(str1[i-1]==str2[j-1]) //只需要跟左上方的c[i-1][j-1]比较就可以了c[i][j]=c[i-1][j-1]+1;else //不连续的时候还要跟左边的c[i][j-1]、上边的c[i-1][j]值比较,这里不需要c[i][j]=0;if(c[i][j]>max){max=c[i][j];x=i;y=j;}}}//输出公共子串char s[1000];k=max;i=x-1,j=y-1;s[k--]='\0';while(i>=0 && j>=0){if(str1[i]==str2[j]){s[k--]=str1[i];i--;j--;}else //只要有一个不相等,就说明相等的公共字符断了,不连续了break;}printf("最长公共子串为:");puts(s);for(i = 0; i < len1+1; i++) //释放动态申请的二维数组delete[] c[i];delete[] c;return max;}int main(void){char str1[1000],str2[1000];printf("请输入第一个字符串:");gets(str1);printf("请输入第二个字符串:");gets(str2);int len = longest_common_substring(str1, str2);printf("最长公共连续子串的长度为:%d\n",len);system("pause");return 0;}
0 0
- (美团网)两个字符串的最长公共子串
- 两个字符串的最长公共子串
- 两个字符串的最长公共子串
- 两个字符串的最长公共子串
- 两个字符串的最长公共子串
- 两个字符串的最长公共子串
- 字符串操作:两个字符串的最长连续公共子串
- 两个字符串的最长公共子序列
- 最长公共子串序列一之 两个字符串的最长公共子串
- 求两个字符串的最长公共子串,最长公共子序列,编辑距离
- 最长公共子串序列一之两个字符串的最长公共子序列
- 求两个字符串的最长的连续公共子串
- 求两个字符串的最长的连续公共子串
- 求两个字符串的最长的连续公共子串
- 求两个字符串的最长的连续公共子串
- 求两个字符串的最长公共子串的长度
- 求两个字符串的最长公共子串的长度
- LCS两个字符串最长公共子串
- 黑马程序员——Java概述
- 【ACdream】Andrew Stankevich's Contest (22)
- 循环的时候坚持使用(signed) 的数据类型的变量作为循环变量
- 二叉排序树
- 10152 - ShellSort
- (美团网)两个字符串的最长公共子串
- 【axure手机原型】移动产品的设计思路谈
- 【axure手机原型】移动产品的设计思路谈
- acdream 1414 Geometry Problem
- POJ 2186 Popular Cows
- 多媒体——图像文件大小的计算
- BNUOJ34976数细菌
- uva11129An antiarithmetic permutation
- AC自动机模板