codevs 1131 统计单词数

时间:2022-09-06 20:42:14
#include<iostream>
#include<string>
using namespace std; int main()
{
string s, s0;
getline(cin, s0);//short
getline(cin, s);
for (int i = ; i < s.length(); i++)
s[i] = tolower(s[i]);
for (int i = ; 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 = ;
int k =pos;
while (k>)
{
cnt++;
k= s.find(s0, ++k);
}
if (!cnt)
cout << - << endl;
else
cout << cnt << " " << pos<< endl;
}

题目解释:

匹配字符串位置与统计个数,就是要注意空格的处理

一个简单的字符串处理功能,但是自己基础不牢。很多地方做得迷糊了。

比如字符间间隔符号是空格,没想到可以在字符串首尾添加空格来处理。

还有就是while(k)的真假判断,只有k为0为假的,其他的,例如1或-1都会是为真的。

我判断到int k=s.find(s,++k).其实返回的是一个无穷大的数,int没法存,就是变成了-1.

另外注意的点:

getline(cin,str);

注意这个函数可以读取到回车结束,可以把空格也一起输入到字符串函数中。