这个题是当时我做错的一道题,字典序想当然了,是搜索到一个小的,字典序就算小了,相等才往后比。想到一个难得算法先不要打怵,可能是一个噱头,比如这个题,就是个水题其实
这是一道模板题:给定两个字符串S和T,询问S中是否存在一个后缀P,使得T的任何一个前缀的字典序都大于P。
注意:数据里同时含有大写与小写字母,比较字典序时严格按照 Ascii 编码进行比较,即我们认为 A
输入描述:
每组数据有两行只包含英文字母的字符串,第一行是S,第二行是T (0<∣S∣,∣T∣≤2×105)(0<
|S|,|T|\leq2\times 10^5)(0<∣S∣,∣T∣≤2×105)
输出描述:
每组数据输出一行,若存在这样的P,输出“YE5”,否则输出“N0”(不带引号)。
示例1
输入
复制
3
lglg
rzynb
zzytql
dalaoddw
uiyouivyziuoxcovzuncuiasdaisdb
yzvuihouvsfvdjsausnnuncvviasudalsky
输出
复制
YE5
N0
YE5
#include
#include
#include
#include
using namespace std;
int main()
{
// freopen("test.in","r",stdin);
// freopen("test.out","w",stdout);
char s[200010],t[200010];
int n,lens,len,lent;
bool pd,vo=true;
scanf("%d",&n);
for (int i=1;i<=n;i++)
{
pd=true;
cin>>s;
cin>>t;
lens=strlen(s);
lent=strlen(t);
len=min(lens,lent);
for (int i=lens-1;i>=0;i--)
if (s[i]