2015美团笔试(南京地区)

昨天去南京参加的美团笔试,我去,好多人,看来大家都很想去。虽然自己比大牛比菜菜,但也做上几道题,看来差距不是特别特别大,哈哈。

把昨天的题目,自己上机试试。


在字符串中找出连续最长的数字串,并把这个串的长度返回,
并把这个最长数字串付给其中一个函数参数outputstr所指内存。
例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,

outputstr所指的值为123456789

#include <stdio.h>
#include <string.h>
#include<ctype.h>

int continumax(char *outstr,char *instr)
{
	int maxnum =0,count=1,i;
	char *head =NULL;
	
	while(*instr != NULL)
	{
		if((isdigit(*instr)) && (*(instr+1) == *(instr) + 1))    //判断是否数字,及是否连续
		{
			count++;
			//printf("count = %d\n",count);
		}
		else 
		{
			if(count > maxnum)
			{
				maxnum = count;
				head = instr - maxnum + 1;        //因为指针前移了一位,实验可以发现
			}
			count =1;
		}
		
		instr++;
	}
	
	outstr[maxnum]=0;
	
	for(i=0; i<maxnum; i++)
	{
		*outstr = *head;
		outstr++;
		head++;
	}
	
	return maxnum;
}

int main()
{
	int result;
	char instr[100],outstr[100];
	
	while(printf("input string: "),fgets(instr,sizeof(instr),stdin) != NULL)
	{
		result = continumax(outstr,instr);
		printf("The result is : %d %s\n\n",result,outstr);  
	}
	
	return 0;
}

 

待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值