在字符串中查找最长的数字串

2014-11-24 11:01:06 · 作者: · 浏览: 0

一、思路:

1、定位最长的数字字符串,并获得长度 2、将最长串拷贝至输出地址中

二、问题:

1、未考虑到字符中存在多个长度相同的数字字符串的情况

三、C代码实现如下:

#include
#include
#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;
}