您的位置:首页 > 其它

codeforces 8a(string的操作)

2017-12-10 14:58 423 查看
通过此题学习了c++中string类的操作,总结如下:

若s为string类的一个对象,则s.find(s1,pos)代表在s中从pos位(默认0)开始查找(包含pos位)s1,若存在,则返回首元素的位置。如

string s="bbqacaaa";
string s1="aca";

a=s.find(s1);      //a的值为3

s.rfind(s1,pos)与find类似,只是从后面开始比较,注意:不是逆序!。如

string s="aaacaaa";
string s1="aaac";
string s2="caaa";

a=s.rfind(s1);     //a的值为0

b=s.rfind(s2);  //b的值为3

另一个知识点就是字符串的逆置,需要用到reverse函数,它在algorithm头文件下,格式如下:

reverse(s.begin(),s.end());

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main(){
string ss,s1,s2;
int flag1,flag2;
int a,b,c,d;

cin>>ss>>s1>>s2;

flag1=flag2=0;
a=ss.find(s1);
b=ss.find(s2,a+s1.size());
if(a!=-1&&b!=-1)	flag1++;

reverse(ss.begin(),ss.end());

a=ss.find(s1);
b=ss.find(s2,a+s1.size());
if(a!=-1&&b!=-1)	flag2++;

if(flag1&&flag2)	cout<<"both"<<endl;
else if(flag1)	cout<<"forward"<<endl;
else if(flag2)	cout<<"backward"<<endl;
else	cout<<"fantasy"<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: