简洁精美源于分析透彻,构思明确、求精,逻辑练达。(2)

本文介绍了一个计算特定字符串中ASCII码范围内不同字符数量的算法。通过使用递减循环来检查每个字符是否已记录,确保统计的是唯一字符。


	/*题目要求:编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。 
设计意图没明确,写代码就不明确,因分析不明确缘故.
假设字符串uqic^g`(s&jnl(m#vt!onwdj(ru+os&wx
取一字符,先要判断是否在ACSII码范围内,次用递减判断是否已记(即重复).
分析明白后再写代码就清楚了.*/
	string 字符串= "uqic^g`(s&jnl(m#vt!onwdj(ru+os&wx";
	int 计数 = 0, 循环 = 0, 比较 = 0, 判断 = 1;
	do
	{
		if (字符串[循环] >= 0 && 字符串[循环] <= 127)
			while (循环 > 比较 && 比较 >= 0)/*这个设计特点是跳过第一个字符比较*/
				if (字符串[循环] == 字符串[比较--])
				{
					判断 = 0;
					break;/*这个逻辑设计特点是即使不跳出循环结果依然正确如果不跳出循环则是全循环次数*/
				}
		if(判断)
			++计数;
		比较 = ++循环 - 1;
		判断 = 1;/*这个逻辑设计特点是即使不跳出循环结果依然正确如果不跳出循环则是全循环次数*/
	} while (循环 < 字符串.size());
	std::cout << 计数 << std::endl;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值