【100题】第二十五 找连续最长数字串

一,题目

写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
功能:
在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串赋给其中一个函数参数outputstr所指内存。
例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9
outputstr
所指的值为123456789

二,分析

主要是测验字符指针的处理功底。

思想:对整个字符串进行截取统计,最后得出最长的数字字符串

三,源码
这个相对比较简单,思路不用多说,跟在序列中求最小值差不多。未经测试。有错误欢迎指出。

#include <iostream> using namespace std; int continumax(char *outputstr, char *intputstr) { int i, maxlen = 0; char * maxstr = 0; bool a=true; while (a) { while (intputstr &&(*intputstr<'0' || *intputstr>'9')) //skip all non-digitcharacters { intputstr++; if(*intputstr =='\0') { a=false; break; } } int count = 0; char * tempstr = intputstr; while (intputstr &&(*intputstr>='0' && *intputstr<='9')) //OK, these characters are digits { count++; intputstr++; if(*intputstr =='\0') { a=false; break; } } if (count > maxlen) { maxlen =count; maxstr =tempstr; } } for (i=0; i<maxlen;i++) { outputstr[i] = maxstr[i]; } outputstr[i] = '\0'; cout<<"outputstr: "<<outputstr<<endl; return maxlen; } int main() { char *intputstr="abcd12345ed125ss123456789"; char *outputstr=new char[100]; ; cout<<"cout:"<<continumax(outputstr, intputstr)<<endl; return 0; } 输出:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值