在字符串中找出连续最长的数字串
2014-06-25 20:48
423 查看
题目描述
请一个在字符串中找出连续最长的数字串,并把这个串的长度返回;如果存在长度相同的连续数字串,返回最后一个连续数字串;
注意:数字串只需要是数字组成的就可以,并不要求顺序,比如数字串“1234”的长度就小于数字串“1359055”,如果没有数字,则返回空字符串(“”)而不是NULL!
样例输入
abcd12345ed125ss123058789
abcd12345ss54761
样例输出
输出123058789,函数返回值9
输出54761,函数返回值5
接口说明
函数原型:
unsignedint Continumax(char** pOutputstr, char* intputstr)
输入参数:
char* intputstr 输入字符串;
输出参数:
char** pOutputstr: 连续最长的数字串,如果连续最长的数字串的长度为0,应该返回空字符串;如果输入字符串是空,也应该返回空字符串;
返回值:
连续最长的数字串的长度
代码:
测试用例:
请一个在字符串中找出连续最长的数字串,并把这个串的长度返回;如果存在长度相同的连续数字串,返回最后一个连续数字串;
注意:数字串只需要是数字组成的就可以,并不要求顺序,比如数字串“1234”的长度就小于数字串“1359055”,如果没有数字,则返回空字符串(“”)而不是NULL!
样例输入
abcd12345ed125ss123058789
abcd12345ss54761
样例输出
输出123058789,函数返回值9
输出54761,函数返回值5
接口说明
函数原型:
unsignedint Continumax(char** pOutputstr, char* intputstr)
输入参数:
char* intputstr 输入字符串;
输出参数:
char** pOutputstr: 连续最长的数字串,如果连续最长的数字串的长度为0,应该返回空字符串;如果输入字符串是空,也应该返回空字符串;
返回值:
连续最长的数字串的长度
代码:
#include <stdlib.h> #include "oj.h" #include <cstring> /* 功能:在字符串中找出连续最长的数字串,并把这个串的长度返回 函数原型: unsigned int Continumax(char** pOutputstr, char* intputstr) 输入参数: char* intputstr 输入字符串 输出参数: char** pOutputstr: 连续最长的数字串,如果连续最长的数字串的长度为0,应该返回空字符串 pOutputstr 指向的内存应该在函数内用malloc函数申请,由调用处负责释放 返回值: 连续最长的数字串的长度 */ unsigned int Continumax(char** pOutputstr, char* intputstr) { char *pTemp =new char[10]; memset(pTemp,'\0',10); char temp[10] = {""}; strncpy_s(pTemp,10, temp,10); if (NULL == intputstr) { *pOutputstr = pTemp; return 0; } size_t strLen = strlen(intputstr); 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 (intputstr[i]>='0' && intputstr[i]<='9') { startNum = i; numLen = 0; while(i<strLen && intputstr[i]>='0' && intputstr[i]<='9') { ++numLen; ++i; } if (numLen!=0 && maxNumLen<=numLen) { memset(pMaxNum,'\0',strLen+1); strncpy_s(pMaxNum,strLen+1, intputstr+startNum,numLen); maxNumLen = numLen; } } } if (maxNumLen == 0) { delete [] pMaxNum; pMaxNum = NULL; *pOutputstr = pTemp; } else { *pOutputstr = pMaxNum; } return (unsigned int)maxNumLen; }
测试用例:
void CExampleTest::TestCase01() { char* intputstr = "abcd12345ed125ss123456789" ; char *pOutputstr = NULL; unsigned int nLength = Continumax(&pOutputstr, intputstr); CPPUNIT_ASSERT(nLength == 9); CPPUNIT_ASSERT((pOutputstr != NULL) && (strcmp(pOutputstr,"123456789") == 0)); free(pOutputstr); }
相关文章推荐
- 在字符串中找出连续最长的数字串
- 在字符串中找出连续最长的数字串
- 找数字串:找出字符串中连续最长的数字串
- 在字符串中找出连续最长的数字串
- 华为oj 在字符串中找出连续最长的数字串
- 在字符串中找出连续最长的数字串
- 找出一个字符串中最长的连续回文
- 《好未来编程题》字符串中找出连续最长的数字串
- 每天学习一点编程(4)(在字符串中找出连续最长的数字串,并把这个串的长度返回)
- 在字符串中找出连续最长的数字串
- C/C++ | 21-9 字符串中找出连续最长的数字串,并把这个串的长度返回
- 在字符串中找出连续最长的数字串
- 字符串中找出连续最长的数字串
- 从字符串中找出连续最长数字串
- 华为OJ 在字符串中找出连续最长的数字串
- 字符串中找出连续最长的数字子串,并返回这个数字串的长度
- 在字符串中找出连续最长的英文字符串
- 华为OJ:在字符串中找出连续最长的数字串
- 【练习】写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,
- 找出一个字符串中最长的连续数字子串,输出该字符串及长度