题目描述
amiloac给你一个仅由小写字母组成的字符串s,请告诉他你能否保证字符串中每一个子串为“ying”的串是否都出现在所有子串为“shu”的串之前。如果能保证,输出“YES”,否则输出“NO”。如果该串中不存在子串为“ying”的串或不存在子串为“shu”的串,也请输出“NO”。
子串:一个字符串从头和尾删除任意个字符后得到的字符串。例如,对于字符串“abc”,“abc” 、“ab” “bc”、“a”、“b”、“c”是它的子串,但“ac”、“ba”、“g”不是它的子串。
输入描述:
输入的第一行包含一个整数t(1≤t≤1⋅10^3),代表样例的数量。 接下来为t组样例,每组样例为一行仅由小写字母组成的字符串s,s的长度至少为1,至多为5⋅10^3。
输出描述:
输出t行,每组样例的输出占一行。 对于每一组样例,如果能保证字符串中每一个子串为“ying”的串是否都出现在所有子串为“shu”的串之前,输出“YES”,否则输出“NO”(不包含引号)。 如果该串中没有子串为“ying”的串或没有子串为“shu”的串,也请输出“NO”。
示例1
输入
2 yingyingyingzuihoushishuguangguang shuguangguangdanxianyingyingying
输出
YES NO
说明
对于第一个样例 “yingyingyingzuihoushishuguangguang”。所有的“ying”都在“shu”前面。 对于第二个样例 “shuguangguangdanxianyingyingying”,存在"shu"在“ying”前面。
这道题要先判断有无 ying 和 shu 再做判断
注意 rfind 和 find 函数的用法
#include<bits/stdc++.h>
using namespace std;
const int N=10;
int n,op,t;
int main()
{
cin >> t;
while(t--)
{
string s1;
cin >> s1;
string s2="ying";
string s3="shu";
if(s1.find(s2)!=string::npos)
{
int r=s1.find(s3);
if(s1.find(s3)!=string::npos)
{
int l=s1.rfind(s2);
if(r>l)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
else
{
cout<<"NO"<<endl;
}
}
else
{
cout<<"NO"<<endl;
}
}
return 0;
}