字符串最大问题

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


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值