您的位置:首页 > 编程语言 > C语言/C++

在字符串中找出连续最长的数字串

2016-05-19 00:46 411 查看
题目描述:

请一个在字符串中找出连续最长的数字串,并把这个串的长度返回;如果存在长度相同的连续数字串,返回最后一个连续数字串;

注意:

数字串只需要是数字组成的就可以,并不要求顺序,比如数字串“1234”的长度就小于数字串“1359055”,如果没有数字,则返回空字符串(“”)而不是NULL!

样例输入:

abcd12345ed125ss123058789

abcd12345ss54761

样例输出:

输出123058789,函数返回值9

输出54761,函数返回值5

接口说明

函数原型:

unsignedint Continumax(char** pOutputstr,  char* intputstr)


输入参数:

char* intputstr 输入字符串;

输出参数:

char** pOutputstr: 连续最长的数字串,如果连续最长的数字串的长度为0,应该返回空字符串;如果输入字符串是空,也应该返回空字符串;

返回值:

连续最长的数字串的长度

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define ERR_ARG (-1)
#define NO_NUM    1

unsigned int continueMax (char **pOutputStr, char *pInputStr)
{
unsigned int maxLen = 0, tmpLen = 0;
char *pTmp = pInputStr;
char *pIndex = NULL;

printf ("%s\n", pInputStr);

if (NULL == pTmp)
{
*pOutputStr = "";
return NO_NUM;
}

while (*pTmp != '\0')
{
if ((*pTmp >= '0') && (*pTmp <= '9'))
{
++tmpLen;
}
else
{
if (tmpLen >= maxLen)
{
maxLen = tmpLen;
pIndex = pTmp - tmpLen;
}
tmpLen = 0;
}
pTmp++;
}

*pOutputStr = (char*)malloc((maxLen+1) * sizeof(char));
strncpy (*pOutputStr, pIndex, maxLen);
printf ("%d %s\n",maxLen, *pOutputStr);
return maxLen;
}

int main (int argc, char* argv[])
{
char *pOutput = NULL;
char *pInput = "qwff234567689jjbcdd1456785566ddfdc";
if (argc < 2)
{
printf ("Usage:\n");
printf ("     ./filename <Input String>\n");
return ERR_ARG;
}

continueMax (&pOutput, argv[1]);
free (pOutput);
continueMax (&pOutput, pInput);
free (pOutput);
}


VirtualBox:160518$ gcc continueMax.c -o con
VirtualBox:160518$ ./con qr34567sdfg
qr34567sdfg
5 34567
qwff234567689jjbcdd1456785566ddfdc
10 1456785566
VirtualBox:160518$ ./con qr34567sdfg12345sdfgh
qr34567sdfg12345sdfgh
5 12345
qwff234567689jjbcdd1456785566ddfdc
10 1456785566
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C语言编程