最大公共子串(C语言实现)
来源:互联网 发布:西安 java 软件公司 编辑:程序博客网 时间:2024/05/21 17:24
给定两个字符串A和B,输出A和B中的最大公共子串。比如A=”aocdfe”,B=”pmcdfa”,则输出“cdf”
方法1:
#include<stdio.h>#include<stdlib.h>#include<string.h>char *commstring(char *str1,char *str2){ char *s1,*s2; int i,j; int len1,len2; if(strlen(str1)>strlen(str2)) { s1=str1; s2=str2; len1=strlen(str1); len2=strlen(str2); } else { s1=str2; s2=str1; len1=strlen(str2); len2=strlen(str1); } char *substr=(char *)malloc(256); if(strstr(s1,s2)!=NULL) return s2; for(i=len2-1;i>0;i--) { for(j=0;j<len1;j++) { memcpy(substr,&s2[j],i)); substr[i]='\0'; if(strstr(s1,substr)!=NULL) return substr; } }return NULL;}
方法2:
int GetCommon(char *s1,char *s2,char **r1,char **r2){ int len1=strlen(s1); int len2=strlen(s2); int maxlen=0; for(int i=0;i<len1;i++) for(int j=0;j<len2;j++) { if(s1[i]==s2[j]) { int start1=i,start2=j,count=1; while(start1+1<len1 && start2+1<len2 && s1[start1]==s2[start2]) { start1++; start2++; count++; } if(count>maxlen) { maxlen=count; *r1=s1+i; *r2=s2+j; } } }}
0 0
- 最大公共子串(C语言实现)
- (C#)最大公共子串
- c语言:查找两个字符串的最大公共子串
- c 求最大公共子串的实现
- C语言数组实现最大公共字符串
- 最大公共子串
- 最大公共子串
- 最大公共子串
- 最大公共子串
- 最大公共子串
- 最大公共子串
- 最大公共子串
- 最大公共子串
- 经典问题LCS(最大公共子串问题)C代码实现
- 2017 蓝桥杯C/C++B组省赛 最大公共子串
- 《算法导论》-最大公共子串(连续) C语言版
- 最大公共子序列 vs 最大公共子串
- 最大公共子串&&最大公共子序列
- 异步任务Asynctask实现图片墙
- 磁盘阵列控制器三种冗余方式
- Thinking in Java 整理笔记:字符串
- Extending query processing with search components
- HTML5怎么读取json文件
- 最大公共子串(C语言实现)
- 文章标题
- Modbus-RTU入门篇
- Qt中delete的问题
- PHP - 多维数组
- 《leetCode》:Combination Sum
- 问题1:java问题--某局小游戏结束后怎么重新开始?
- C#通过adb传输安卓设备数据
- leetcode笔记:Best Time to Buy and Sell Stock IV