黑马程序员技术交流社区
标题:
关于求公共子字符串的问题简单实现
[打印本页]
作者:
扒皮大叔
时间:
2015-12-8 14:09
标题:
关于求公共子字符串的问题简单实现
#include <stdio.h>
#include <string.h>
#include <assert.h>
// 找出两个字符串中最长的公共子串(如果存在多个 , 返回第一个)
// 参数:str1 字符串1
// str2 字符串2
// maxSubStr 找到的最大子串
void findMaxSubstr(const char *str1 , const char *str2 , char *maxSubstr){
assert((str1!=NULL)&&(str2!=NULL));
assert(maxSubstr!=NULL);
int maxPos=-1;
int maxLen=0; //相同字符串的最大长度
// 穷举
for(unsigned int i=0; i<strlen(str1); i++)
{
for(unsigned int j=0; j<strlen(str2); j++)
{
if(str1[i] == str2[j]) //发现相同的字母
{
// 继续比较后面的是否也相同
for(int k=1; (str1[i+k]==str2[j+k])&&(str1[i+k]!='\0'); k++)
;
if(k>maxLen) // 是否为目前最长字符串
{
maxPos=i; // 起始位置
maxLen=k; // 长度
}
}
}
}
if(maxPos==-1)
{
maxSubstr[0]='\0';
}
else
{
memcpy(maxSubstr , str1+maxPos , maxLen);
maxSubstr[maxLen]='\0';
}
}
int main()
{
char substr[20];
findMaxSubstr("dddabd123456abcdefeeeee" , "234dddabcdegeeee" , substr);
printf("%s\n",su
作者:
hailiqh
时间:
2015-12-8 21:17
写的好!支持一下
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2