【HDU - 2072 】單詞數(字串讀入技巧,sstream大法,水題,字串讀入格式)
阿新 • • 發佈:2018-11-01
題幹:
lily的好朋友xiaoou333最近很空,他想了一件沒有什麼意義的事情,就是統計一篇文章裡不同單詞的總數。下面你的任務是幫助xiaoou333解決這個問題。
Input
有多組資料,每組一行,每組就是一篇小文章。每篇小文章都是由小寫字母和空格組成,沒有標點符號,遇到#時表示輸入結束。
Output
每組只輸出一個整數,其單獨成行,該整數代表一篇文章裡不同單詞的總數。
Sample Input
you are my friend #
Sample Output
4
解題報告:
恕我直言這題是真雞兒無聊,,你不用gets或者geline是死活AC不了的、、因為就算你再怎麼神奇的操作,考慮的再嚴密,,他樣例第一行萬一 上來一個空格 然後就回車了、、你咋整?本來應該輸出0的,,你就直接讀入了,因為你不可能程式一開始就先讀一個ch然後判讀如果不是空格的話再存入字串中啊!!那豈不是太麻煩了。,,,為了這個題沒必要,於是直接上istringstream就好了。。。
AC程式碼:
#include<iostream> #include<cstdio> #include<sstream> #include<set> using namespace std; int main() { string s; while(getline(cin, s) && s != "#") { istringstream in(s); set<string> ss; string w; while(in>>w) ss.insert(w); cout << ss.size() << endl; } return 0; }
WA程式碼:
#include<set> #include<cstdio> #include<string> #include<cstring> #include<iostream> #define ll long long using namespace std; string s; set<string> ss; int main() { char ch; while() { if(s[0] == '#') break; ss.clear(); ss.insert(s); ch=getchar(); if(ch != '\n') { while(cin>>s) { ch=getchar(); if(s[0] == '#') break; ss.insert(s); if(ch=='\n') break; } } printf("%d\n",ss.size()); } return 0; }