您的位置:首页 > 移动开发 > 微信开发

每天一个小程序(13)——统计字符个数

2014-03-28 16:26 597 查看
统计字符个数

任意输入一个字符串,统计字符串中每种字符的个数,并输出。

最开始我的想法是,建立一个结构体,这个结构体包含两个部分,一个用来保存字符c,另一个保存字符出现的次数count。然后在遍历字符串的过程中,将字符逐个插入到这个结构体数组中,并记录出现的次数,第一次碰到的字符就插入到数组中,并且初始count为1,第二次出现的字符就直接count加1.

后来我的好友雷锋的另一个算法我觉得不错,并且能够更快的输出,即先对这个字符串进行排序,排序的依据为ASCII值,然后只需遍历一遍,就可以将这个字符以及出现的次数计算出。

下面是代码

#include <stdio.h>
#include <algorithm>

#define NUM 100

struct Data
{
char ch;
int count;
}data[NUM];

void print(char str,int count)//打印至屏幕,主要是为了显示“空格”
{
if(str == 32)
printf("%s : %d\n","空格",count);
else
printf("%c : %d\n",str,count);
}
void count(char str[],int n)
{
char *temp = str;
std::sort(temp,temp+n);//进行排序
char a1,a2;
int count = 0;
int num = 0;
a1 = temp[num++];
count++;
while(num <= n)
{
a2 = temp[num++];
if(a1 == a2)//碰到相同的 count加1
{
count++;
}
else//碰到不同的,输出字符和count,并记录新的字符
{
print(a1,count);
a1 = a2;
count = 1;
}
}
}

void main()
{
char str[NUM];
printf("请输入字符串:\n");
gets(str);
int len = strlen(str);
count(str,len);
}


PS:这个程序是区分大小写的

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐