2012-07-06 61 views
1

我必須編寫一個函數,它接受一個字符串並返回字符串中所有丟失的字母。下面的函數看起來很簡單,但它沒有返回任何東西。任何提示?爲什麼不是pangram丟失字母函數返回任何東西?

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

順便說一句,你通過引用傳遞,但你做的第一件事是複製。相反,通過價值傳遞會更容易和更靈活。 – Wug 2012-07-06 16:19:02

+1

您是否嘗試過*調試*您的代碼?你的代碼包含一個非常經典和非常基本的錯誤。錯誤可以通過調試你的代碼來找到。 SO並不是爲了「爲我調試」社區。 – AnT 2012-07-06 16:31:30

回答

1

您需要

alphabet.erase(j,1);

刪除位置j上的單個字符。

+0

謝謝,那是問題所在。再加上我用休息取代了j--。 – postelrich 2012-07-06 16:42:15

0

alphabet.erase(i)也許應該alphabet.erase(j)

看看你目前的代碼完成:

外環檢查句子的第一個字母,然後,如果內環發現它在字母表,它會從字母表中刪除「a」。如果它仍然在字母表中,它將刪除「b」,依此類推。如果句子中有一個「z」,整個字母將會被刪除。

相關問題