版权声明:本文为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++统计字母出现次数

相关文件

4B-3.cpp

Last modification:November 6, 2022
如果觉得我的文章对你有用,请随意赞赏~