华为练习3 在字符串中找出连续最长的数字串

来源:互联网 发布:股票大盘软件 编辑:程序博客网 时间:2024/06/16 16:58
#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){if(intputstr==0||*intputstr=='\0'){//当字符为空时char* p=(char*)malloc(sizeof(char));*p='\0';*pOutputstr=p;return 0;}int a=0;//现在字符串长度int b=0;//最长数字串长度int sitea=0;//最长数字串开始处int siteb=0;bool isD=false;//判断是否之前指针指向数字int i=0;for(;i<1000;){//最后一个字符为'\0‘if(*intputstr>='0'&&*intputstr<='9'){if(!isD)sitea=i;a++;isD=true;}else{if(isD){if(a>=b){siteb=sitea;b=a;}a=0;isD=false;}}if(*intputstr=='\0')break;i++;//总长度没有末尾,且指针不指向末尾intputstr++;}intputstr-=(i-siteb);char* p=(char*)malloc(sizeof(char)*++b);for(int j=1;j<b;j++){*p++=*intputstr++;}*p='\0';p-=--b;*pOutputstr=p;return b;}

0 0
原创粉丝点击