面试题:在字符串中找出连续最长的数字串

题目要求:
在字符串中找出连续最长的数字串,并把这个串的长度返回;函数原型:
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;
}

猜你喜欢

转载自blog.csdn.net/han8040laixin/article/details/81208098