练习9.49:如果一个字母延伸到中线之上,如d或f,则称其有上出头部 分(ascender)。如果一个字母延伸到中线之下,如p或g,则称其有下 出头部分(descender)。编写程序,读入一个单词文

难点:

1. 想到通过既没有ascender和decender的子串是连续的

2.通过逆向,得到非acender和非decender的字符,然后通过find_first_of找到符合要求的所有子串的起点

3.通过搜索判断后续字符是否是非ascender和decender

4.通过比较长度,保留最长子串

string test25(const string& str)
{
	const string target = "acemnorsuvwxz";
	int pos = 0,post=0,max=0;
	//pos:从str中位置pos开始查找任何在target中出现的字符的下标
	string res="";
	//post:子串的中字符的下标
	//max:当前最大长度
	while ((pos = str.find_first_of(target, pos)) != string::npos)
	{
		 post = pos + 1;
		while (target.find(str[post]) != string::npos)
		{
			++post;
		}
		if (post - pos > max)
		{
			max = post - pos;
			res = str.substr(pos, max);
		}
		pos = post + 1;
	}
	return res;
}

CPP萌新,请大佬们多指教,有错误请评论区指出,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值