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);
}