C程序:如何查找字符串中字符的最大/最小频率

时间:2013-01-28 14:09:49

标签: c string character frequency

我试图找到一种方法来获取字符串中最大/最小字符数的值

E.g。 helpme

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

另一个例如AAAA

将具有max freq = 4和min freq = 4

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

假设只有小写,而且单词之间没有空格。

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

提前致谢

1 个答案:

答案 0 :(得分: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]]++;
}

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

相关问题