昨天去南京参加的美团笔试,我去,好多人,看来大家都很想去。虽然自己比大牛比菜菜,但也做上几道题,看来差距不是特别特别大,哈哈。
把昨天的题目,自己上机试试。
在字符串中找出连续最长的数字串,并把这个串的长度返回,
并把这个最长数字串付给其中一个函数参数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;
}
待续。。。