输出字符串中连续最长的数字串

来源:互联网 发布:苏州单片机培训班 编辑:程序博客网 时间:2024/05/17 04:23
#include <stdio.h>#include <stdlib.h>// #include "oj.h"#include <cstring>/** * 输出字符串中连续最长的数字串 * * 函数原型: *   unsigned int Continumax(char** pOutputstr,char*  *   intputstr) *   * 输入参数: *   char* inputstr 输入字符串 *   * 输出参数: *   char** pOutputstr 连续最长的数字串,如果为零,则返回空 *   pOutputstr 指向的内存应该在函数内用malloc申请,有调用 *   处负责释放 * * 返回值: *   连续最长的数字串的长度 *  *  */unsigned int Continumax(char ** pOutputstr,char* inputstr){    char *pTemp = new char[10];    memset(pTemp,'\0',10);    char temp[10] = {""};    strncpy_s(pTemp,10,temp,10);    if(NULL == inputstr)    {        *pOutputstr = pTemp;        return 0;    }    size_t strLen = strlen(inputstr);    char* pMaxNum = new char(strLen+1);    size_t numLen = 0,maxNumLen = 0;    size_t startNum = 0;    for(size_t i=0;i<strLen;i++)    {        if(inputstr[i]>='0' && inputstr[i]<='9')        {            startNum = i;            numLen = 0;            while(i<strLen && inputstr[i]>='0' && inputstr[i]<='9')            {                numLen++;                i++;            }            if(numLen != 0 && maxNumLen<=numLen)            {                memset(pMaxNum,'\0',strLen+1);                strncpy_s(pMaxNum,strLen+1,inputstr+startNum,numLen);                maxNumLen = numLen;            }        }    }    if( maxNumLen == 0)    {        delete [] pMaxNum;        pMaxNum = NULL;        *pOutputstr = pTemp;    }    else    {        *pOutputstr = pMaxNum;    }    return (unsigned int)maxNumLen;}//测试用例void CExampleTest::TestCase01(){    char* inputstr = "abcd12345ed125ss123456789" ;     char *pOutputstr = NULL;    unsigned int nLength = Continumax(&pOutputstr,inputstr);    CPPUNIT_ASSERT(nLength == 9);    CPPUNIT_ASSERT((pOutputstr != NULL) && (strcmp(pOutputstr,"123456789")==0));    free(pOutputstr);}
0 0
原创粉丝点击