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

你需要

字母表擦除(j,1);

擦除位置 j 处的单个字符。

于 2012-07-06T16:22:23.683 回答
0

alphabet.erase(i)应该是alphabet.erase(j)

看看你当前的代码做了什么:

外部循环检查句子的第一个字母,然后,如果内部循环在字母表中找到它,它会从字母表中删除“a”。如果它仍在字母表中,则删除“b”,依此类推。如果您的句子中有“z”,则将始终删除整个字母表。

于 2012-07-06T16:21:50.403 回答