1

我正在尝试找到一种方法来获取字符串中字符的最大/最小频率值

例如帮助我

将有 max freq = 2 和 min freq = 1(有 2 个 e 并且还有其他字母出现一次)

另一个例如 aaaa

最大频率 = 4 和最小频率 = 4

我正在尝试对此进行编程,但我不知道在使用 scanf 收到字符串后该怎么做。

假设只有小写字母,单词之间没有空格。

此外,我更喜欢蛮力搜索,而不是由类型转换和诸如此类的优雅解决方案。刚开始使用C,请尽可能简单。顺便说一句,我不介意这只是一个建议或如何做到这一点的基本程序。我不一定需要整个代码。

提前致谢

4

1 回答 1

7

你需要建立一个直方图:

size_t histogram[UCHAR_MAX] = { 0 };     // allocate and initialise histogram

for (size_t i = 0; s[i] != '\0'; ++i)    // generate histogram for string s
{
    histogram[(unsigned int)s[i]]++;
}

在此之后,您可以通过直方图进行线性扫描,寻找最小和最大字母频率。

于 2013-01-28T14:13:01.713 回答