2014华为机试-在字符串中找出连续最长的数字串

来源:互联网 发布:淘宝商城招商 编辑:程序博客网 时间:2024/06/09 16:43
在字符串中找出连续最长的数字串
描述: 
题目描述
 请一个在字符串中找出连续最长的数字串,并把这个串的长度返回;如果存在长度相同的连续数字串,返回最后一个连续数字串;

注意:数字串只需要是数字组成的就可以,并不要求顺序,比如数字串“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"/* 功能:在字符串中找出连续最长的数字串,并把这个串的长度返回函数原型:   unsigned int Continumax(char** pOutputstr,  char* intputstr)输入参数:   char* intputstr  输入字符串输出参数:   char** pOutputstr: 连续最长的数字串,如果连续最长的数字串的长度为0,应该返回空字符串   pOutputstr 指向的内存应该在函数内用malloc函数申请,由调用处负责释放返回值:  连续最长的数字串的长度 */unsigned int Continumax(char** pOutputstr,  char* intputstr){int startPos = 0;int remPos = 0;int count = 0;int maxCount = 0;char *ptemp;ptemp = intputstr;*pOutputstr = NULL;if (NULL == intputstr){*pOutputstr = (char *) malloc(sizeof(char));if (*pOutputstr == NULL){*pOutputstr = NULL;return 0;}*(*pOutputstr) = '\0';return 0;}while (*intputstr != '\0'){if ((*intputstr <= '9') && (*intputstr >= '0')){startPos++;count++;intputstr++;}else{if (count >= maxCount){maxCount = count;remPos = startPos - maxCount;}count = 0;startPos++;intputstr++;}}if ((maxCount > 0) || (count > 0)){if (count >= maxCount){maxCount = count;remPos = startPos - maxCount;}*pOutputstr = (char *) malloc(maxCount + 1);if (*pOutputstr == NULL){*pOutputstr = NULL;return 0;}for (int i = 0; i < maxCount; i++)*(*pOutputstr + i) = *(ptemp + remPos + i);*(*pOutputstr + maxCount) = '\0';return maxCount;}*pOutputstr = (char *) malloc(sizeof(char));if (*pOutputstr == NULL){*pOutputstr = NULL;return 0;}*(*pOutputstr) = '\0';return 0;}


0 0
原创粉丝点击