HJ92. 在字符串中找出连续最长的数字串
描述
输入描述
输入一个字符串。1<=len(字符串)<=200
输出描述
输出字符串中最长的数字字符串和它的长度,中间用逗号间隔。如果有相同长度的串,则要一块儿输出(中间不要输出空格)。
示例1
输入:
abcd12345ed125ss123058789 a8a72a6a5yy98y65ee1r2
输出:
123058789,9 729865,2
说明:
样例一最长的数字子串为123058789,长度为9 样例二最长的数字子串有72,98,65,长度都为2C 解法, 执行用时: 1ms, 内存消耗: 256KB, 提交时间: 2020-07-07
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> int main() { char str[1000]={'\0'}; while(scanf("%s",str) != EOF) { int len=strlen(str); int num=0,max=0; int arr[100]={0}; int brr[100]={0}; int k=0; int ii=0; for(ii=0;ii<len;ii++) { if(str[ii]>='0'&&str[ii]<='9') num++; else { if(num>=max && num>0) { max=num; arr[k]=ii-max; brr[k]=max; k++; } num = 0; } } if(num) { if(num>=max) { max=num; arr[k]=ii-max; brr[k]=max; k++; } } if(max==0) { printf("\n"); continue; } int flag=0; for(int i=0;i<k;i++) { if(brr[i]==max) { for(int j=arr[i];j<arr[i]+max;j++) printf("%c",str[j]); } } printf(",%d\n",max); } return 0; }
C 解法, 执行用时: 1ms, 内存消耗: 256KB, 提交时间: 2020-07-07
#include <stdio.h> #include <string.h> #include <ctype.h> #define LEN 100 int record[LEN] = {0}; int main() { int len, curlen, i, j; char buf[LEN] = {0}; while (scanf("%s", buf+1) != EOF) { buf[0] = '*'; len = curlen = j = 0; for (i=strlen(buf); i>=0; i--) { if (isdigit(buf[i])) { curlen++; } else { if (curlen > len) { len = curlen; record[0] = i+1; j = 1; } else if (curlen==len && len>0) { record[j++] = i+1; } curlen = 0; } } while(j--) { for (i=0; i<len; i++) printf("%c", buf[record[j]+i]); } printf(",%d\n", len); } return 0; }