描述: | 题目描述
请一个在字符串中找出连续最长的数字串,并把这个串的长度返回;如果存在长度相同的连续数字串,返回最后一个连续数字串; 注意:数字串只需要是数字组成的就可以,并不要求顺序,比如数字串“1234”的长度就小于数字串“1359055”,如果没有数字,则返回空字符串(“”)而不是NULL! 样例输入 abcd12345ed125ss123058789 abcd12345ss54761
样例输出 输出123058789,函数返回值9 输出54761,函数返回值5
接口说明 函数原型: unsignedint Continumax(char** pOutputstr, char* intputstr) 输入参数: 输出参数: 返回值: |
/* 功能:在字符串中找出连续最长的数字串,并把这个串的长度返回
函数原型:
unsigned int Continumax(char** pOutputstr, char* intputstr)
输入参数:
char* intputstr 输入字符串
输出参数:
char** pOutputstr: 连续最长的数字串,如果连续最长的数字串的长度为0,应该返回空字符串
pOutputstr 指向的内存应该在函数内用malloc函数申请,由调用处负责释放
返回值:
连续最长的数字串的长度
*/
unsigned int Continumax(char** pOutputstr, char* intputstr)
{
bool isDigiit = false; //字符串中是否有数字
int i = 0, maxLength = 0, beginIndex = 0;
int currLength = 0,currIndex = 0;
/* 遍历输入的字符串 */
for (i = 0; intputstr[i] != '\0'; i++)
{
/* 找到是数字的字符 */
if (intputstr[i] >= '0' && intputstr[i] <= '9')
{
currLength = 0;
isDigiit = true;
currIndex = i;
while (intputstr[i] != '\0' && (intputstr[i] >= '0' && intputstr[i] <= '9'))
{
i++;
currLength++;
}
if (currLength >= maxLength)
{
maxLength = currLength;
beginIndex = currIndex;
}
}
}
/* 如果字符串中没有数字 */
if (isDigiit == false)
{
*pOutputstr = "";
}
else
{
(*pOutputstr) = (char*)malloc(maxLength + 1);
memset((*pOutputstr), 0, maxLength + 1);
strncpy_s(*pOutputstr, maxLength + 1, intputstr + beginIndex, maxLength);
(*pOutputstr)[maxLength] = '\0';
}
return maxLength;
}