1

文字列内の文字の最大/最小頻度の値を取得する方法を見つけようとしています

例:helpme

max freq=2およびminfreq= 1になります(2つのeがあり、他の文字が1回出現します)

別の例: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 に答える