查询字符串中字符出现个数思路
- 对字符串进行去重,存入一个新数组中
去重实现原理:
检查新数组中是否含有该字符,若没有则添加
在Java和JavaScript中封装了一些数组的方法可以进行调用但由于c没有,此处需要自行利用新方法判断,但其原理一样
方法:
(1)创建一个全部为0的数组,利用for循环进行判断是否含有,若是添加成功将其值改成1。
(2)判断方法,由于字符有所对应的ASCII码值,其对应下标一致,可以判断当遇到重复时判断是否含有 - 将新数组中的每一个字符拿出与旧数组中元素进行比较,相等增加个数
注意:为了保证每一个字符的个数都要被记下,因此在双重循环中要定义一个局部变量,打印出一个字符,其个数就要重置为0
int main()
{
char s[100],t[100];
int count[200]={0},i,j,k=0;
scanf("%s",&s);
for(i=0;i<strlen(s);i++)
{
if(count[s[i]]==0)
{
t[k++]=s[i];
count[s[i]]=1;
}
}
t[k]='\0';
//1.第一种遍历去重后数组的方法
puts(t);
//2.第二种遍历去重后数组的方法
for(i=0;i<strlen(t);i++)
{
printf("%c ",t[i]);
}
printf("\n");
//计数
for(i=0;i<strlen(t);i++)
{
int sum=0;
for(j=0;j<strlen(s);j++)
{
if(t[i]==s[j])
{
sum++;
}
}
printf("%c个数为:%d",t[i],sum);
printf("\n");
}
return 0;
}