求一个字符串中出现的不同的字符的个数

示例:
输入一串字符“anhhAkjJ”
得到的结果应该是:“7”

方法一:
利用ascll码0-127,定义一个128大小的字符串

#include <stdio.h>

#define M 100
#define N 128

int cal_count_str(char *pstr,int *COUNT)
{
	//入参检查
	if(NULL == pstr || NULL == COUNT)
	{
		printf("NULL_ERROR!\n");
		return -1;
	}
	//先定义一个可以存放128个字符的数组出来
	int CmpArr[N] = {0};
	//遍历pstr这个字符串,判断出现的次数
	while(*pstr)
	{
		if(0 == CmpArr[*pstr])
		{
			CmpArr[*pstr] = 1;
			//计算个数
			//(*COUNT)++;
		}
		//让pstr滚动起来
		pstr++;
	}
	
	//遍历CmpArr这个数组,查找1的个数即可
	int i;
	for(i=0;i<N;i++)
	{
		if(1 == CmpArr[i])
		{
			(*COUNT)++;
		}
	}
	
	return 0;
}
int main(int argc, const char *argv[])
{
	//利用字函数实现求一个字符串中出现的不同字符的个数
	char str[M] = {'\0'};
	char *pStr = str;
	gets(pStr);
	
	//定义一个用来存放个数的变量
	int count = 0;
	int ret = cal_count_str(pStr,&count);
	if(-1 == ret)
	{
		return -1;
	}
	printf("该字符串中不同的字符个数为: %d个\n",count);
	return 0;
}

方法二:

#include<stdio.h>
#define N 30

int different(char*s)
{
	int i,j,k=1,l=1;
	char m[N]={0};
	m[0]=s[0];
	for(i=1;s[i]!='\0';i++)
	{
		l=1;
		for(j=0;m[j]!='\0';j++)
		{
			if(m[j]==s[i])
			{
				l=0;
				break;
			}
		}
		if(l==1)
		{
			m[j]=s[i];
			k++;
		}

	}
	return k;
}
int main(int argc, const char *argv[])
{
	char str[N]={0};
	printf("请输入你所要统计的字符串:\n");
	gets(str);

	int G = different(str);
	printf("字符串%s中不同的字符数为%d个\n",str,G);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值