codevs 1131 統計單詞數
阿新 • • 發佈:2018-07-16
統計單詞 tolower i++ 其他 位置 std ace ++ space
#include<iostream> #include<string> using namespace std; int main() { string s, s0; getline(cin, s0);//short getline(cin, s); for (int i = 0; i < s.length(); i++) s[i] = tolower(s[i]); for (int i = 0; i < s0.length(); i++) s0[i] = tolower(s0[i]);int k1 = s.length(); int k2 = s0.length(); s = " " + s + " "; s0 = " " + s0 + " "; int pos = s.find(s0); int cnt = 0; int k =pos; while (k>0) { cnt++; k= s.find(s0, ++k); } if (!cnt) cout << -1 << endl; else cout<< cnt << " " << pos<< endl; }
題目解釋:
匹配字符串位置與統計個數,就是要註意空格的處理
一個簡單的字符串處理功能,但是自己基礎不牢。很多地方做得迷糊了。
比如字符間間隔符號是空格,沒想到可以在字符串首尾添加空格來處理。
還有就是while(k)的真假判斷,只有k為0為假的,其他的,例如1或-1都會是為真的。
我判斷到int k=s.find(s,++k).其實返回的是一個無窮大的數,int沒法存,就是變成了-1.
另外註意的點:
getline(cin,str);
註意這個函數可以讀取到回車結束,可以把空格也一起輸入到字符串函數中。
codevs 1131 統計單詞數