题解 | #在字符串中找出连续最长的数字串#
在字符串中找出连续最长的数字串
https://www.nowcoder.com/practice/2c81f88ecd5a4cc395b5308a99afbbec
//遍历字符串,每次找到长度更大的就覆盖一次,此后找到同样长的就存入新数组 #include <stdio.h> #include<string.h> int main() { char arr[200], p[200], r[200]; while (scanf("%s", arr) != EOF) { int i = 0, j = 0, sz = strlen(arr), max = 0, count = 0, num = 0, M = 0, N = 0, f = 1; for (i = 0; i < sz; i++) { count = 0; num = i; while (arr[i] >= '0' && arr[i] <= '9') { i++; count++; } //和当前最长的的长度相同 if (count == max) { //M哨兵位,防止短数据存入r if (M == count) { for (j = f * M; j < (f+1) * M; j++) { r[j] = arr[num]; num++; } f++; } //出现更大的长度后,第一次遇到同等长度 else { M = max; for (j = 0; j < max; j++) { r[j] = arr[num]; num++; } f = 1; } } //遇到更大长度 if (count > max) { max = count; for (j = 0; j < max; j++) { p[j] = arr[num]; num++; } } } for (i = 0; i < max; i++) { printf("%c", p[i]); } if (M==max)//M与max相等,证明不只一组 { for (i = 0; i < f * max; i++) { printf("%c", r[i]); } } printf(",%d\n", max); } return 0; }