1. 程式人生 > >codevs 1131 統計單詞數

codevs 1131 統計單詞數

統計單詞 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 統計單詞數