目录
描述
输入一个字符串,返回其最长的数字子串,以及其长度。若有多个最长的数字子串,则将它们全部输出(按原字符串的相对位置)
本题含有多组样例输入。
数据范围:字符串长度1≤n≤200 , 保证每组输入都至少含有一个数字
输入描述:
输入一个字符串。1<=len(字符串)<=200
输出描述:
输出字符串中最长的数字字符串和它的长度,中间用逗号间隔。如果有相同长度的串,则要一块儿输出(中间不要输出空格)。

解题过程
提交代码
学习代码
代码一
(来源:题解 | #在字符串中找出连续最长的数字串#_牛客博客)
#include<stdio.h>
#include<string.h>
#define N 200
int main(){
char str[N];
while(scanf("%s",str)!=EOF){
int max=0,count=0;
for(int i=0;i<strlen(str);i++)//该循环的作用是,找出连续数字个数的最大值
{
if(str[i]>='0'&&str[i]<='9')
count++;
else
count=0;
if(max<count)
max=count;//找到连续数字个数的最大值
}
for(int i=0;i<strlen(str);)
{
if(str[i]>='0'&&str[i]<='9')//此循环的意义是打印出个数等于最大值的所有数字
{
int j=i+1;//定义一个j=i+1
while(str[j]&&str[j]>='0'&&str[j]<='9') j++;
if(j-i==max) //根据这个差值进行打印输出所有满足条件的连续数字
while(j!=i)
printf("%c",str[i++]);
else
i=j;//这里要注意一下,i=j,这里是i的更新
}
else
i++;//如果str[i]不是数字,那么i++
}
printf(",%d\n",max);
}
return 0;
}
该博客介绍如何在给定字符串中找出最长的连续数字子串及其长度,支持多个相同长度子串的输出。通过C语言实现,适用于字符串长度不超过200的情况。

被折叠的 条评论
为什么被折叠?



