20.字母和数字组成字符串,输出最长数字串,并返回字符串的长度值
输入:abc123ss45 输出:123,当有多个长度相同数字字符串时,输出最后一个,输入:aa12345bc44567 输出:44567
#include<sdio.h>
#include<string.h>
unsigned int ContinueMax(char *pInputStr, char *pOutputStr)
{
int i,j=0,StrLength,max_numberLength=0,max_numberLength_index=0,count_numberStr_section=-1,k=0;
int numberStr_length[10]={0};
StrLength=strlen(pInputStr);
for(i=0;StrLength;)
{
if('0'<=pInputStr[i]&&pInputStr[i]<='9') //如果是数字
{
++numberStr_length[j]; //对应数字串段数组计数+1
if(pInputStr[i+1]<'0'||pInputStr[i+1]>'9') //数字与字母后分界线
++j;
++i;
}else //非数字
++i;
}
for(i=0;i<j;++i)
max_numberLength=(max_numberLength>numberStr_length[i])?max_numberLength:numberStr_length[i]; //找出最长数字串的长度
for(i=0;i<j;++i)
{
if(max_numberLength==numberStr_length[i])
max_numberLength_index=i; //找出在数组中最长数字串的下标
}
for(i=1;i<=StrLength;++i)
{
if((pInputStr[i-1]<'0'||pInputStr[i-1]>'9')&&(pInputStr[i]>='0'&&pInputStr[i]<='9')) //如果是数字与字母的前分界线
++count_numberStr_section;
if((pInputStr[i]>='0'&&pInputStr[i]<='9')&&count_numberStr_section=max_numberLength_index) //如果匹配到最长数字字符串
pOutputStr[k++]=pInputStr[i];
}
pOutputStr[k]='\0';
}
int main(void)
{
char pInputStr[50],pOutputStr[50];
printf("Input the string:\n");
gets(pInputStr);
ContinueMax(pInputStr,pOutputStr);
puts(pInputStr);
return 0;
}