当前位置: 首页 > 知识库问答 >
问题:

C++程序,查找字符串中最频繁的字符[closed]

陈业
2023-03-14

我必须解决下一个问题:给定一个可以在多行上的字符串,找到显形最多的char。大写字母将算作小写字母。如果我有多个字符具有相同数量的幻影,将显示ASCII代码最小的字符。我的程序应该在最后输出所有读取行中出现最多的字符。还有,我不能使用正则表达式。我将在下面发布我的实现。看来我错过了我正在学习的平台上的一个案子。

#include <iostream>
#include <string>
using namespace std;

int freq[122];

int main()
{
    string text;
    while (getline(cin, text)) {
        for (int i = 0, length = text.size(); i < length; ++i) {
            if (isupper(text[i])) {
                text[i] = tolower(text[i]);
            }
            ++freq[(int)text[i]];
        }
        int mostOccurences = freq['z'];
        char mostFrequent = 'z';
        for (int  = 'y'; i >= 'a'; --i) {
            if (freq[i] >= mostOccurences) {
                mostOccurences = freq[i];
                mostFrequent = (char)i;
            }
        }
    }
    cout << mostFrequent << "\n";
    return 0;
}

共有1个答案

孙经艺
2023-03-14

“如果我有多个字符具有相同数量的幻影,将显示ASCII代码最小的字符。”

您的代码中的问题在这里:

        for (int  = 'y'; i >= 'a'; --i) {
            if (freq[i] >= mostOccurences) {
                mostOccurences = freq[i];
                mostFrequent = (char)i;
            }
        }

在第二个for循环中的最后一个条件中。基本上应该是>而不是>=

(另外,我想您忘了将一些变量减速复制到您的问题中,例如char='z'行或for循环声明)

 类似资料:
  • 我需要在一个字符串中找到许多子字符串。我下载了一个网页并把它放入一个字符串中。然后我要看看页面是否包含一些字符串(子字符串)。 现在我在boost库中使用正则表达式,因为我使用它来使用正则表达式模式([0-9]等)。 问题是:如果我只需要在一个字符串中找到一个子字符串,哪种方法是最快的?

  • 问题是,我试图这么做,但我检查字符串长度的方法不起作用;我能做些什么来修复它?

  • 我如何在O(N**2)个时间内完成它?

  • 我有一个字符串“1,3,5,7,9,11,12,14”,我想检查该字符串在java中是否包含“12,3,14”。 我的代码:

  • 我知道如何使用动态规划来解决 <罢工> 大多数 给定两个字符串的最长公共子串或最长公共子串。然而,对于字符串Y的子串X的最长子序列问题,我很难找到一个解决方案。 查找字符串X的所有子序列并按长度desc排序; 遍历排序的子序列,如果当前子序列是Y的子字符串,则返回子序列。 它可以工作,但运行时间可能会很糟糕。假设X中的所有字符都是唯一的,那么有2^m个子群,其中m是X的长度,我认为检查一个字符串是

  • 问题内容: 这个问题与Python类似-在字典中查找最长(最多单词)键-但我需要纯字符数。 输入示例: 输出: 问题答案: 替代方法,与@jamylak的解决方案一样快,并且使用更多的pythonic: 查看比较: