为什么pangram缺少字母功能不返回任何东西?

时间:2012-07-06 16:16:51

标签: c++ string compare

我必须编写一个函数,它接受一个字符串并返回字符串中所有缺少的字母。下面的功能似乎很简单,但它没有返回任何东西。任何提示?

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;
}

2 个答案:

答案 0 :(得分:1)

你需要

alphabet.erase(j,1);

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

答案 1 :(得分:0)

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

查看当前代码的作用:

外循环检查句子的第一个字母,然后,如果内循环在字母表中找到它,它将删除&#34; a&#34;从字母表。如果它仍在字母表中,则删除&#34; b&#34;,依此类推。如果有&#34; z&#34;在你的句子中,整个字母将永远被删除。