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

本博客介绍了一个函数,其功能是在给定的字符串中查找并返回连续最长的数字串长度,同时将该数字串赋值给指定内存。通过逐字符遍历并跳过非数字字符,实现高效搜索过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,题目

写一个函数,它的原形是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、付费专栏及课程。

余额充值