查找两个字符串中的最大子串,返回子串的长度和

#include "stdio.h"
#include "malloc.h"
#include "string.h"

int maxsubstr(char *str1, char *str2, char **p)
{
    char *p1, *p2, *p3;
    p1 = str1;
    char *substr;//子串
    int max, len = max = 0;
    while(*p1 != '\0'){
        len = 0;

        p2 = str2;
        p3 = p1;

        while(*p2 != '\0' && *p3 != '\0'){
            if(*p2 == *p3){
                len++;
                p2++;
                p3++;
                if(len > max){
                    substr= p1;
                    max = len;
                }
            }
            else p2++;
        }
        p1++;
    }
    *p = (char *)malloc((max + 1) * sizeof(char));//要比子串大一个存储空间,用字符串结束符
    memcpy(*p, substr, max);
    memset(*p + max , '\0', 1);//添加字符串结束符
    return max;
}

int main()
{
  char *s1="sdff";
  char *s2="dddff";
  char *p;//子串
  // char *sub;
  int i;//子串长度
  printf("%s\n%s\n",s1,s2);
  i = maxsubstr(s1,s2, &p);
  printf("the max sub string is:%d\t%s\n",i, p);
  return 0;
}


转载于:https://my.oschina.net/ervinfly/blog/309228

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值