题目要求:
在字符串中找出连续最长的数字串,并把这个串的长度返回;函数原型:
unsigned int Continumax(char** pOutputstr, char* intputstr);
后者是输入字符串,前者是输出的连续最长的数字串。
如果连续最长的数字串的长度为0,应该返回空字符串,而非NULL。
思路:遍历字符串,遇到数字后就开始循环,直到遇到的不是数字后才跳出循环,计算出数字的长度,记录与保存的最大长度变量进行比较,更新最大长度变量。
代码:
unsigned int Continumax(char** pOutputstr, char* inputstr)
{
int size = 0;//记录当前数字串的长度
int i = 0;//用来遍历inputstr
int maxsize = 0;//保存最长数字串的长度
int end = 0;//记录最大数字串的结束位置
while (inputstr[i] != '\0')
{
size = 0;//每一趟先把size置0
//若是数字,则累加size
while ('0' <= inputstr[i] && inputstr[i] <= '9')
{
size++;
i++;
}
//比较判断最大数字串的长度和结束位置
if (size >= maxsize)
{
maxsize = size;
end = i - 1;
}
i++;
}
if (0 == maxsize)//如果没有数字或者输入字符串为空
{
*pOutputstr = (char*)malloc(sizeof(char));
**pOutputstr = '\0';
return 0;
}
else
{
*pOutputstr = (char*)malloc(sizeof(char) * (maxsize));
*pOutputstr = inputstr + end - maxsize + 1;
return maxsize;
}
}
int main()
{
char* a = "123abc12";
char* b;
int i = Continumax(&b, a);
//free(b);
return 0;
}