2016-07-27 81 views
1

我不知道錯誤在哪裏。我試圖在分隔符是空格,製表符,逗號,冒號,分號,短劃線和句點的字符串中找到第一個重複的單詞。第一個重複的單詞在句子中

有沒有人看到我確定是一個明顯的錯誤?

std::string repeat(std::string str) { 
    std::set<std::string> seen; 

    str.insert(str.end(), ' '); 

    std::string tmp; 
    for (auto const& s : str) { 
    if (s != ' '&& 
     s != '\t'&& 
     s != '.'&& 
     s != ','&& 
     s !=':'&& 
     s != ';'&& 
     s != '-') 
     tmp += s; 
    else { 
     if (seen.find(tmp) != seen.end()) 
     return tmp; 
     else { 
     seen.insert(tmp); 
     tmp.clear(); 
     } 
    } 
    } 

    return "no repeats"; 
} 
+0

@KABoissonneault它的失敗對一個未知的測試用例。 – learning

+2

@KABoissonneault代碼審查僅適用於***工作代碼*** – syb0rg

+0

@learning您是否在談論那些在線代碼競賽,其中您的代碼針對一系列測試運行,但您不知道哪一個?那裏沒有代碼審查平臺嗎? – KABoissonneault

回答

0

,你在這裏寫的代碼工作正常,按https://ideone.com/sbsUeI

您的問題是在其他地方。也許在調試器中檢查輸入字符串並查看正在傳遞的內容。

測試程序(從鏈接):

#include <iostream> 
#include <string> 
#include <set> 

using namespace std; 

std::string repeat(std::string str) { 
    std::set<std::string> seen; 

    str.insert(str.end(), ' '); 

    std::string tmp; 
    for (auto const& s : str) { 
    if (s != ' '&& 
     s != '\t'&& 
     s != '.'&& 
     s != ','&& 
     s !=':'&& 
     s != ';'&& 
     s != '-') 
     tmp += s; 
    else { 
     if (seen.find(tmp) != seen.end()) 
     return tmp; 
     else { 
     seen.insert(tmp); 
     tmp.clear(); 
     } 
    } 
    } 

    return "no repeats"; 
} 

int main() { 
    std::cout << repeat("cat dog cat man"); // prints "cat" 
    return 0; 
} 
相關問題