1

文字列を受け取り、文字列内の欠落しているすべての文字を返す関数を作成する必要があります。以下の関数は十分に単純に見えましたが、何も返されません。ヒントはありますか?

string getMissingLetters(const string& sentence)
{
    string alphabet = "abcdefghijklmnopqrstuvwxyz";
    string sent = sentence;
    transform(sent.begin(), sent.end(), sent.begin(), ::tolower);

    for(unsigned int i = 0; i < sent.size(); i++)
        for(unsigned int j = 0; j < alphabet.size(); j++)
        {
            if(sent[i] == alphabet[j])
            {
                alphabet.erase(i);
                j--;
            }
        }
    return alphabet;
}
4

2 に答える 2

1

あなたが必要です

アルファベット.erase(j、1);

位置jの1文字を消去します。

于 2012-07-06T16:22:23.683 に答える
0

alphabet.erase(i)おそらくalphabet.erase(j)

現在のコードが何をしているのか見てみましょう。

外側のループは文の最初の文字を調べ、内側のループがアルファベットでそれを見つけた場合、アルファベットから「a」を削除します。それがまだアルファベットにある場合は、「b」などを削除します。文中に「z」が含まれている場合、アルファベット全体が常に削除されます。

于 2012-07-06T16:21:50.403 に答える