每个字母的重复次数 你知道如何在C++中找到一个单词中每个字母的重复次数吗? 例如,单词是密西西比

每个字母的重复次数 你知道如何在C++中找到一个单词中每个字母的重复次数吗? 例如,单词是密西西比,c++,numbers,counting,C++,Numbers,Counting,M-1 I-4 S-4 p-2使用地图。。。自行选择是否使用大写/小写和标点符号/其他符号 #include <map> #include <iostream> using namespace std; int main() { string word = "MISSISSIPPI"; map<char,int> charCount; for (unsigned int i=0; i<word.size(); i++)

M-1

I-4

S-4


p-2使用地图。。。自行选择是否使用大写/小写和标点符号/其他符号

#include <map>
#include <iostream>

using namespace std;

int main() {
    string word = "MISSISSIPPI";
    map<char,int> charCount;
    for (unsigned int i=0; i<word.size(); i++)
        charCount[word[i]]++;

    for (map<char, int>::iterator it = charCount.begin(); it != charCount.end(); ++it)
        cout << it->first << ": " << it->second << endl;

    return 0;
}
#包括
#包括
使用名称空间std;
int main(){
字符串word=“密西西比”;
map字符数;

对于(unsigned int i=0;i,因为这几乎肯定是家庭作业,所以我只给出总体情况

当然,创建一个向量,每个可能的字母对应一个向量(因为你会说英语,可能26个位置向量就足够了)。将所有位置初始化为零

在整个字符串上运行,对于每个字母,将每个位置的一个字母添加到与您正在读取的字符串位置的字母对应的向量中。例如,如果您正在读取一个“a”,求和1到第一个位置。对于一个“b”,求和1到第二个位置,依此类推。请注意,您不应该关心大写和小写

到达字符串的末尾?很好。现在遍历向量并显示每个非零位置的计数。您可以将相应的字母放在其旁边


请记住,所有简单的字母都是按ASCII/Latin1/UTF-*的字母顺序排列的,因此“a”将给出相应字母的编号。(x-“a”)将给出字母在向量中的位置。不要对哪个精确值感到好奇,因为这是不可移植的。

我认为您可以尝试以下方法:

#include <iostream>
#include <cstring>

int main()
{
    const int N = 26;//number of characters in the alphabet
    int count[N];
    char *str = "MISSISSIPPI";

    for (int i = 0; i < N; i++) count[i] = 0;
    for (int i = 0; i < strlen(str); i++)
    {
        if (str[i] >= 'a' && str[i] <= 'z')
            ++count[str[i]-'a'];
        else if (str[i] >= 'A' && str[i] <= 'Z')
            ++count[str[i] - 'A'];

    }
    for (int i = 0; i < N; i++)
        cout << (char)('a'+i) << " - " << count[i];

    return 0;
}
#包括
#包括
int main()
{
const int N=26;//字母表中的字符数
整数计数[N];
char*str=“密西西比”;
对于(int i=0;i如果(str[i]>='a'&&str[i]='a'&&str[i]为什么映射?向量应该足够了,向量也应该工作得很好,我只是喜欢映射,那么他就不必处理把它放在哪里。它会为他安排好一切。你不需要
if/else
,因为当你访问索引时,它被创建并默认初始化(到
0
)。所以
charCount[c]“+ + /代码”就够了。谢谢你,伙计!不,这不是一个家庭作业!我只是想知道如何做这些操作,因为我不熟悉C++。我是一个新手。如果理解是你真正需要的,那么我很乐意帮忙。如果String包含了除了A.Z,AZ.Zu的任何字符,那么你可以做一个256元素的数组。在尝试更新直方图之前,您可以-或者可以使用
ctypes.h
中的
isalpha()
检查您的角色。因为代码不是一个很好的编程示例。接受批评,代码编辑了一点