今日题目:
开始的时候,很自然的使用了string,虽然题目本来也说要用到,不过,这就掉入了它的第一个坑,因为输入的数据有空格,所以录入的时候只会录入打进去的第一个完整的单词。 为了解决这个问题,就要使用string头文件里面的函数,也是第一个用到的函数getline(cin,a) 这个就是对字符串a下一个cin的指令。
接着是后面的函数,s.length()、tolower(s[i]),这个在之前的博客里面说过,不过哪个里面是cctype的使用。
还有一个b.find(a).在b里面找符合a的数据,下面是高精代码:
#include <iostream>
#include <string>
//命名空间
using namespace std;
int main(){
//定义两个字符串
string a;
string b;
//用string库,调用getline, 直接读入一整行
getline(cin,a);
getline(cin,b);
//转换大小写,可以都转换为大写,或者小写
for (int i=0;i<a.length();++i){
a[i]=tolower(a[i]);
}
for (int i=0;i<b.length();++i){
b[i]=tolower(b[i]);
}
//因为连起来的不算,所以要在前后加几个空格,一定要是同样多的,同量减同量,等于同量
a=' '+a+' ';
b=' '+b+' ';
//先看看会不会找不到,用a.find()和string::npos
if (b.find(a)==string::npos){
cout<<-1<<endl;
}
//如果找得到
else {
int alpha=b.find(a);
int beta=b.find(a),s=0;//计数器初始化为0
while (beta!=string::npos){
++s;//计数器
beta=b.find(a,beta+1);
}
cout<<s<<" "<<alpha<<endl;//输出第一个和总共有几个
}
//函数返回值为0,结束整个程序
return 0;
}