c语言:查找两个字符串的最大公共子串
2017-11-24 20:15
459 查看
题目:编程实现查找两个字符串的最大公共子串
示例:”aocdfe”和”pmcdfa”最大公共子串为”cdf”
思路:
输入两个字符串,由短字符串的长度决定比较次数。
每次比较一个字符,从短字符串的第一个依次与长字符串的每一个字符比较,若出现相同的字符,则两个字符串各自取下一位进行比较,直到出现不相同字符的为止。(同时要注意比较是不能超出短字符串的长度,不然会出现未知后果)
定义两个数组a,b;a用来获取相同字符,若a的长度大于b的长度,则将a复制给b。
代码如下:
示例:”aocdfe”和”pmcdfa”最大公共子串为”cdf”
思路:
输入两个字符串,由短字符串的长度决定比较次数。
每次比较一个字符,从短字符串的第一个依次与长字符串的每一个字符比较,若出现相同的字符,则两个字符串各自取下一位进行比较,直到出现不相同字符的为止。(同时要注意比较是不能超出短字符串的长度,不然会出现未知后果)
定义两个数组a,b;a用来获取相同字符,若a的长度大于b的长度,则将a复制给b。
代码如下:
#include <stdio.h> #include <string.h> void substr(char *s1, char *s2, int len) { int i, j, m = 0; int p, q; int length = strlen(s2); char a[100] = {0}; char b[100] = {0}; for(i = 0; i < len; i++) { for(j = 0; j < length; j++) { strcpy(a, "0"); p = i; q = j; while(s1[p] == s2[q] && s1[p] != 0) { a[m] = s2[q]; p++; q++; m++; } if(strlen(a) > strlen(b)) { strcpy(b, a); } m = 0; } } printf("最大公子串:%s\n", b); } int main() { char str1[100] = {0}; char str2[100] = {0}; int len; printf("请输入字符串1:"); scanf("%s", str1); printf("请输入字符串2:"); scanf("%s", str2); len = strlen(str1) <= strlen(str2) ? strlen(str1) : strlen(str2); if(len == strlen(str1)) { substr(str1, str2, len); } else if(len == strlen(str2)) { substr(str2, str1, len); } return 0; }
相关文章推荐
- c语言查找两个字符串中的公共子串
- 查找两个字符串中的最大公共子串
- 编程查找两个字符串最大公共子串
- 编程实现查找两个字符串的最大公共子串 示例:"aocdfe"和"pmcdfa"最大公共子串为"cfd"
- [C/C++笔面试]编程查找两个字符串中的最大公共子串
- 求两个字符串最大公共子串
- 找出两个字符串中最大的公共子串的简单实现
- 查找两个字符串a,b中的最长公共子串
- 求两个字符串的公共子串的最大长度
- 华为oj 查找两个字符串a,b中的最长公共子串
- 【华为OJ】【081-查找两个字符串a,b中的最长公共子串】
- 查找两个字符串的最长公共子串(附源码)_AX
- 从两个顺序的字符串中寻找最大公共子串
- java实现字符串匹配问题之求两个字符串的最大公共子串
- 查找两个字符串a,b中的最长公共子串
- 华为OJ中级题-查找两个字符串a,b中的最长公共子串
- java实现字符串匹配求两个字符串的最大公共子串
- 找出两个字符串的最大公共子串
- 华为机试在线训练-牛客网(30)查找两个字符串a,b中的最长公共子串
- C++实现求两个字符串的最大公共子串