找出只出现过一次的字母

输入一串只包含大小写的字符串,找出其中只出现一次的字符并输出。
Input: aabcdeeff
Output: bcd

实现思路:声明一个数组,每个数组元素对应一个字母,元素的值存放该字母出现的次数,最后遍历这个数组找出值为1的元素,也就找到了对应的字母。

/*从A到z*/
#define input_RANGE ('z' - 'A' + 1)

int count_letter(char *input, char *output)
{
	int i = 0;
	int temp[input_RANGE + 1] = {'\0'};

	if ((NULL == input) || (NULL == output)) {
		return -1;
	}

	while(*(input + i) != '\0') {
		/*不是大小写自己立即返回*/
		if (((*(input + i) < 'A') || (*(input + i) > 'Z')) &&
			((*(input + i) < 'a') || (*(input + i) > 'z'))) {
			return -1;
		}
		/*数组每一个元素对应'A'到'z',当出现一个字母就在其对应的位置加1计数*/
		temp[*(input + i) - 'A'] += 1;
		i++;
	}

	/*遍历数组,元素为1的位置就是只出现了一次的字母*/
	for(i = 0; i < input_RANGE; i++) {
		if (1 == temp[i]) {
			sprintf(output, "%c", 'A' + i);
			output++;
		}
	}
	*output = '\0';

	return 0;
}



不论字母是出现一次、还是多次都可以用该方法计算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值