大连大学2022年11月程序设计竞赛(同步赛)原创 H题题解


 

题目描述

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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值