<span style="font-family: 宋體, Arial, Helvetica, san-serif;">題目:</span> 編寫一個小程序,從標准輸入讀入一系列string對象,尋找連續重復出現的單詞,程序應該找出滿足以下條件的單詞的輸入位置:該單詞的後面緊跟著再次出現自己本身,跟 蹤重復次數量多的單詞及其重復次數.輸出重復次數的最大值, 例如.如果輸入是: how now now now brown cow cow 則輸出表明now這個單詞出現了三次
#include <iostream> #include <string> #include <cctype> #include <vector> using namespace std; int main() { <pre name="code" class="cpp"><span style="white-space:pre"> </span>string s; vector<string> vec; int maxRepeat = 0; while (cin >> s){ if(ispunct(s[s.size()-1])) s = s.substr(0,s.size() - 1); //去除最後的標點符號 vec.push_back(s); } vector<string>::size_type i = 0; vector<int> vecInt(vec.size(),1); while (i != vec.size() - 1){ int j = i; string str = vec[i]; while(i != vec.size() - 1) { if(str == vec[++i]) vecInt[j] ++; else break; } } vector<int>::size_type k = 0; int max = vecInt[k]; int flag = 0; while (k != vecInt.size() - 1){ if(max < vecInt[++k]){ max = vecInt[k]; flag = k; } } cout << "The word of " << vec[flag] << " repeats: " << vecInt[flag] << " times." << endl; cout << endl;</pre><pre name="code" class="cpp"><pre name="code" class="cpp"> return 0; }</pre> <pre></pre> <pre></pre> <p>自己的解法答案是對的 但從空間復雜度來說要復雜的多,所以在網上搜了下,尋找到另外一種解決辦法,修改後的代碼如下:</p> <p></p> <pre name="code" class="cpp">#include <iostream> #include <string> #include <cctype> using namespace std; int main() { </pre><pre name="code" class="cpp"><pre name="code" class="cpp"><span style="white-space:pre"> </span>string nowWord,beforeWord,result; cin >> nowWord; if(ispunct(nowWord[nowWord.size() - 1]))nowWord = nowWord.substr(0,nowWord.size() - 1); result = beforeWord = nowWord; int count = 1,maxCount = 1; while(cin >> nowWord){ if(ispunct(nowWord[nowWord.size() - 1]))nowWord = nowWord.substr(0,nowWord.size() - 1); if (beforeWord == nowWord){ count++; } else{ beforeWord = nowWord; count = 1; } if(count > maxCount){ maxCount = count; result = nowWord; } } if(maxCount == 1) cout << "There is no word repeating." << endl; else cout << "The word of " << result << " repeats: " << maxCount << " times." << endl; return 0; }</pre> <pre></pre> <p></p> <pre></pre> 特在此分享給大家 參考或給予好的想法參考改進。。謝謝~~ <p></p> <p></p> <p><span style="font-family:宋體,Arial,Helvetica,san-serif; font-size:14px; line-height:22.390625px"></span></p> <p><span style="font-family:宋體,Arial,Helvetica,san-serif; font-size:14px; line-height:22.390625px"></span></p> <pre></pre> <pre></pre> </pre></pre>