版权声明:本文为CSDN博主「PETERMAOSX」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43635647/article/details/103549676
描述
输入一串字符串用回车结束,输出输入的字符串中的各个字母的出现个数。
使用了哈希算法。
实现
思路1
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char str[50]; //字符串个数不可超过50个字符
int a[28]={0}; //存放每个字母出现的次数,下标从0到25分别与字母a至z对应
cin>>str; //输入字符串
int len=strlen(str); //用整型变量len存放输入的字符串的长度,若想使用此句,需包含头文件<cstring>
//修改每个字母对应的出现次数
for(int i=0;i<len;i++)
a[str[i]-'a']++; //例如,出现字母c,c-'a'为2,则a[2]增长1
//输出出现次数不为零的字母及其出现次数
for(int j=0;j<26;j++)
{
if(a[j]!=0)
cout<<char(j+'a')<<": "<<a[j]<<endl;
}
system("pause");
return 0;
}
思路2
#include <stdio.h>
#include<iostream>
using namespace std;
//查找各个字符出现的次数
void FindTimes(char * str){
int hash [256] = {0};
int index = 0;
for(;str[index] != '\0';index++){
hash[str[index]]++;
}
for(index = 0;index < 256;index++){
if(hash[index] == 0) continue;
cout<<(char)index<<" : "<<hash[index]<<endl;
}
printf("\r\n");
}
int main(){
string s1; //输入的string
getline(cin,s1); //带空格的string 输入
char str[s1.length()]; //开char*空间
strcpy(str, s1.c_str());//string转char*
FindTimes(str); //算法实现
return 0;
}
参考资料
算法-字符串_统计输入每个字符出现的次数_PETERMAOSX的博客-CSDN博客
【c++源码】字符出现次数统计_wywy5220的博客-CSDN博客_c++统计字母出现次数
相关文件
One comment
你的文章让我心情愉悦,每天都要来看一看。 https://www.4006400989.com/qyvideo/35548.html