2016-07-27 7 views
1

バグがどこにあるのか分かりません。私は区切り文字がスペース、タブ、カンマ、コロン、セミコロン、ダッシュ、ピリオドである文字列の最初の繰り返し単語を見つけようとしています。文章の中で最初に繰り返される単語

私には明らかなエラーは誰にも分かりますか?あなたの問題は別の場所にあるhttps://ideone.com/sbsUeI

あたりとして

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

あなたはここに書いたように、コードは、正常に動作します。おそらく、デバッガの入力文字列をチェックし、何が渡されているかを確認します。

(リンク)からテストプログラム:

#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; 
} 
関連する問題