C++ 查找字符串中最常见的字母
我想在字符串中找到最常见的字母 这是我得到的提示,但我无法理解C++ 查找字符串中最常见的字母,c++,C++,我想在字符串中找到最常见的字母 这是我得到的提示,但我无法理解 将大小为26的整数数组初始化为全零(假设此数组为letterCount) 将输入字符串转换为所有小写(假设该字符串为encodedString) 使用for循环一步一个字符地遍历字符串。使用isalpha检查字符是否为字母字符。如果是,则按如下方式递增数组:letterCount[encodedstring[x]-97]+ 编辑:我的代码 int computeShift(std::string fileContent) {
letterCount[encodedstring[x]-97]+
int computeShift(std::string fileContent)
{
int letterCount[26] = { 0 };
for (int i = 0; i < fileContent.length(); i++)
{
if (isalpha(fileContent[i]))
{
letterCount[fileContent[i]-97]++;
}
}
return 3; //Temporary
}
int computeShift(std::string fileContent)
{
int-letterCount[26]={0};
对于(int i=0;i
您没有执行步骤2:
'a'
和'a'
都可以映射到数组索引0,'b'
和'b'
都可以映射到索引1,依此类推
因此,您可以:
- 在循环输入字符串之前,将其转换为所有小写:
#包括
std::string str_tolower(std::string s){
std::transform(s.begin()、s.end()、s.begin(),
[](无符号字符c){return std::tolower(c);}
);
返回s;
}
int computeShift(标准::字符串文件内容)
{
int-letterCount[26]={0};
std::string fileContentLowerCase=str_tolower(fileContent);
对于(int i=0;i
- 将输入字符串保持原样,改用
和isupper()
:islower()
#包括
int computeShift(标准::字符串文件内容)
{
int-letterCount[26]={0};
对于(int i=0;i
到目前为止您尝试了什么?这不是暗示。这就是答案。我尝试过别人给我的东西,但一直都有收获Error@WesB您没有执行步骤#2-在迭代中的字符之前,将输入字符串转换为小写it@WesB这个提示意味着它并不总是小写的,这就是第二步存在的原因。所以除了代码看起来像是按照提示所说的那样。有什么不起作用?