二字符串匹配字串最大长度
来源:互联网 发布:怎么找高级小姐 知乎 编辑:程序博客网 时间:2024/04/29 19:32
int get_max_substr_match(char *p, char *q)
{
/******************************************************************************
三层循环,第一层:p中从第0个字符开始
第二层:q中从第0个字符开始
第三层:p中第i个字符在q中某个j的位置找到后,用pos记录位置,
进入此循环,此循环继续往下匹配,sum++,如果发现不匹配,
判断sum是否大于记录的最大匹配数量sum_max,
如果大于,sum_max=sum;pos_max=pos;
退出第三层循环。j继续增加,即从上次找到的pos的下一个字符开始去匹配。
*********************************************************************************/
int i,j,k;
/*****************************
记录位置和匹配上的总数,
当匹配总数超过上次匹配上的总数,
给相应的max赋值。
******************************/
int pos,pos_max,sum=0, sum_max=0;
for (i=0; *(p+i)!='\0'; i++)
{
for(j=0; *(q+j)!='\0'; j++)
{
/*从p中依次选字符去跟q中的字符匹配*/
if( *(p+i) == *(q+j) ) //匹配上的话,立即进入第三层循环
{
pos = j;
for(k=j; (*(q+k)!='\0') && (*(p+i+(k-j))!='\0'); k++) //从q中与p匹配上的第一个字符开始往下找
{
if ( *(p+i+(k-j)) != *(q+k) )
break;
sum++;
}
if(sum > sum_max) //循环结束后,判断本次匹配上的字符个数是不是比上次匹配上的还多
{
pos_max = pos; //最大的起始位置
sum_max = sum; //匹配上的字符个数(根据这个就知道匹配终止的位置了)
}
sum = 0;
}
}
}
/*把找到的位置和匹配的字符数量变成相应的位置*/
for (i=pos_max;i<pos_max+sum_max;i++)
{
putchar(*(q+i));
}
printf("\nsum_max=%d\n",sum_max);
return sum_max;
}
int test()
{
char *p = "the procedure named 'hello world' is used in many(different language) programs!";
char *q = "I want to search for the worlds(different language), usa the function named search_char!!!";
MaxSubStrMatched(p, q);
return 0;
}
{
/******************************************************************************
三层循环,第一层:p中从第0个字符开始
第二层:q中从第0个字符开始
第三层:p中第i个字符在q中某个j的位置找到后,用pos记录位置,
进入此循环,此循环继续往下匹配,sum++,如果发现不匹配,
判断sum是否大于记录的最大匹配数量sum_max,
如果大于,sum_max=sum;pos_max=pos;
退出第三层循环。j继续增加,即从上次找到的pos的下一个字符开始去匹配。
*********************************************************************************/
int i,j,k;
/*****************************
记录位置和匹配上的总数,
当匹配总数超过上次匹配上的总数,
给相应的max赋值。
******************************/
int pos,pos_max,sum=0, sum_max=0;
for (i=0; *(p+i)!='\0'; i++)
{
for(j=0; *(q+j)!='\0'; j++)
{
/*从p中依次选字符去跟q中的字符匹配*/
if( *(p+i) == *(q+j) ) //匹配上的话,立即进入第三层循环
{
pos = j;
for(k=j; (*(q+k)!='\0') && (*(p+i+(k-j))!='\0'); k++) //从q中与p匹配上的第一个字符开始往下找
{
if ( *(p+i+(k-j)) != *(q+k) )
break;
sum++;
}
if(sum > sum_max) //循环结束后,判断本次匹配上的字符个数是不是比上次匹配上的还多
{
pos_max = pos; //最大的起始位置
sum_max = sum; //匹配上的字符个数(根据这个就知道匹配终止的位置了)
}
sum = 0;
}
}
}
/*把找到的位置和匹配的字符数量变成相应的位置*/
for (i=pos_max;i<pos_max+sum_max;i++)
{
putchar(*(q+i));
}
printf("\nsum_max=%d\n",sum_max);
return sum_max;
}
int test()
{
char *p = "the procedure named 'hello world' is used in many(different language) programs!";
char *q = "I want to search for the worlds(different language), usa the function named search_char!!!";
MaxSubStrMatched(p, q);
return 0;
}
0 0
- 二字符串匹配字串最大长度
- 字符串最大匹配长度
- 公共最大字串长度
- 求两个字符串最大的公共字串的长度
- 一个字符串中无重复的字串最大长度
- 找到字符串中最大的回文字串的长度
- 求字符串可匹配的最大长度
- 最大字串匹配问题
- KMP字符串匹配,字串
- 计算两个字符串的最大公共字串的长度,字符不区分大小写(要求计算连续最长字串的长度)
- (最长回文字串)字符串中对称的子字符串的最大长度
- 基于STL的字符串最大长度匹配算法
- 题目标题: 计算两个字符串的最大公共字串的长度,字符不区分大小写
- LeetCode系列字符串操作(一)ZigZag输出,寻找最大不重复字串长度。
- 华为OJ平台 求2个字符串的最大公共字串长度
- 华为机试:计算两个字符串的最大公共字串的长度,字符不区分大小写
- OJ 系列之求两个字符串最大的公共字串的长度
- 最大回文字串长度-manacher算法
- flex调用javascript代码
- Crystal Report 字段自动换行
- 远程服务器返回了意外相应:(413) Request Entity Too Large。
- idea 找不到jar包
- Linux内核编码风格
- 二字符串匹配字串最大长度
- 一步一步学习openfire+spark(1)
- 黑马程序员 知识点总结-Java反射
- Android AppWidget核心之AppWidgetService
- 一条sql实现无限极分类
- BMP文件格式
- 2013年极客范最受欢迎的10篇博文
- js继承的实现
- Linux用户空间与内核空间