一、思路:
1、定位最长的数字字符串,并获得长度 2、将最长串拷贝至输出地址中
二、问题:
1、未考虑到字符中存在多个长度相同的数字字符串的情况
三、C代码实现如下:
#include <stdio.h>
#include <stdlib.h>
#define true 1
#define false 0
typedef int bool;
int get_longest_digital_string(char *outputstr, const char *inputstr)
{
int len = 0,max_len = 0;
bool flag_digital = false;
char *p1,*max_str = NULL;
if (inputstr == NULL || outputstr == NULL)
return -1;
//获取最长数字串的首地址
while(*inputstr != '\0') {
if(*inputstr >= '0' && *inputstr <= '9' && flag_digital == false) {
p1 = (char *)inputstr;
len++;
flag_digital = true;
} else if(*inputstr >= '0' && *inputstr <= '9') {
len++;
} else {
if(len > max_len) {
max_len = len;
max_str = p1;
}
len = 0;
flag_digital = false;
}
inputstr++;
if(inputstr=='\0' && len>max_len) {
max_len = len;
max_str = p1;
}
}
//拷贝最长的数字字符串到outputstr
int flag = max_len;
while(*max_str != '\0' && flag != 0) {
*outputstr++ = *max_str++;
flag--;
}
*outputstr = '\0';
return max_len;
}
int main()
{
int len;
char *inputstr,*outputstr;
inputstr = "abc123456def7891011ok66";
outputstr = (char *)malloc(sizeof(inputstr)+1);
len = get_longest_digital_string(outputstr, inputstr);
if(len <= 0)
printf("fail to get digital string!");
printf("The longest digital string is %s,the len is %d\n\n", outputstr,
len);
return 0;
}