查找字符串中最长的连续数字子串

#include <iostream>

using namespace std;

int max_num_str(char* pstr, char* output)
{
	if ( *pstr == '\0')
	{
		*output = '\0';
		return 0;
	}

	char* p_first = pstr;
	char* p_last = pstr;
	int num = 0;

	while(*p_first != '\0')
	{
		if (*p_first>='0' && *p_first<='9') break;
		++p_first;
	}
	if (*p_first == '\0') 
	{
		*output = '\0';
		return 0;
	}

	p_last = p_first+1;
	while(*p_last != '\0')
	{
		if (*p_last<'0' || *p_last>'9')
		{
			--p_last;// revert
			break;
		}
		++p_last;
	}

	int x = p_last-p_first+1;
	int y = max_num_str(p_last+1, output);
	if (x < y)
		return y;
	
	int i= 0;
	for(;p_first<=p_last;++p_first)
		output[i++]=*p_first;
	output[i] = '\0';
	return x;	
}

int main(int argc, char* argv[])
{
	char* psrc = "aaa123wdf123456gff";
	char pdst[100];
	int x = max_num_str(psrc, pdst);
	cout<<x<<endl;
	cout<<pdst<<endl;
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值