字符串最大问题

来源:互联网 发布:www.js filter.com 编辑:程序博客网 时间:2024/05/17 07:16

1 求两个字符串的最大公共字串

#include "stdio.h"   #include "malloc.h"   #include "string.h"     char *maxsubstr(char *str1, char *str2)  {     char *p1, *p2, *q1, *q2, *destp;     char *substr;     int max = 0, len;     p1 = str1;     while(*p1 != '\0')     {     q1 = str2;     while(*q1 != '\0')     {    len = 0;  //这部分初始化非常重要,要注意好!  p2 = p1;    q2 = q1;    while((*p2 != '\0')&&(*q2 != '\0'))    {    if(*p2 == *q2)    {    p2 ++;q2 ++;len ++;    }    else    {   break;    }    }    if(len > max)    {    max = len;    destp =p1;    }    q1++;     }     p1++;     }     substr=(char*)malloc(sizeof(char)*max);     strncpy(substr,destp,max);     substr[max] = '\0';   return substr;  }   int main()  {    char *s1="aocdfe";    char *s2="pmcdfa";    char *sub;    printf("%s\n%s\n",s1,s2);    sub = maxsubstr(s1,s2);    printf("the max sub string is:%s\n",sub);     return 0;  }  


2 求一个字符串中连续数字字符最大的串,并且返回其个数

#include <stdio.h>#include <string.h>#include <malloc.h>int maxSeqStr(char *input_str,char *output_str){char *p,*q,*des;int len,max = 0;p = input_str;while(*p != '\0'){q = p;len = 0;//非常重要的初始化部分!while(*q != '\0'){if((*q >= '0') && (*q <= '9')){len ++;q ++;}else{break;}}if(len > max){max = len;des = p;}p ++;}strncpy(output_str,des,max);output_str[max] = '\0';return max;}int main(){char *input_str = "sdf3432432ksjd234k345fjsd9835sdfsd0123456789dfgdfg45345";char *output_str = (char *)malloc(strlen(input_str));printf("max = %d\n",maxSeqStr(input_str,output_str));printf("output = %s\n",output_str);}