PTA刷题第十五题
输入一个字符串,求该字符串中最长连续数字序列出现的起始位置及其长度。
输入格式:
输入一个字符串,可包含空格。
输出格式:
输出内容:最长数字序列起始位置和长度空格隔开。输出尾部不能有空格。输入空串,输出"NULL"
输入样例:
123ab12345a
输出样例:
5 5
思路:首先判断输入字符串是否为空,如果是空字符串,直接输出NULL,如果不是,则对字符串中每一个元素进行遍历,定义两个个变量,当循环开始时,一个元素用于记录位置,另一个元素用于记录连续数字的长度,之后每遇到一个新的连续数字序列,就与之前记录的连续数字序列长度进行比较,如果长度大于之前的连续数字序列,则进行更新。
代码如下:
#include<stdio.h>
#include<string.h>
int main()
{
char a[300]={0};
int i=0,j=0,n=0,maxCount=0,maxStart=0;
gets(a);
if(strcmp(a, "\0")==0)
{
printf("NULL\n");
return 0;
}
while(a[j]!='\0')
{
while(a[j]>'9'||a[j]<'0') i++,j++;
while(a[j]<='9'&&a[j]>='0') j++;//a[i]和a[j]之间夹住的是数字
if(j-i>maxCount) //用maxCount来记录最长数字连续的个数,用maxStart来记录最大数字串的起始位置
{
maxStart=i;
maxCount=j-i;
}
i=j;
}
printf("%d %d\n",maxStart,maxCount);
return 0;
}