链接:https://www.nowcoder.com/acm/contest/109/B
来源:牛客网

给出两个串s和x
定义s中的某一位i为好的位置,当且仅当存在s的子序列 满足y=x且存在j使得i=kj成立。
问s中是否所有的位置都是好的位置。

输入描述:

一行两个字符串s,x,这两个串均由小写字母构成。
1 <= |s|, |x| <= 200000

输出描述:

Yes表示是。
No表示不是。

示例1

输入

abab
ab

输出

Yes
示例2

输入

abacaba
aba

输出

No
示例3

输入

abc
ba

输出

No
 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 #include<cmath>
 5 #include<string>
 6 #include<cstring>
 7 using namespace std;
 8 int main()
 9 {
10     string a,b;
11     int flag=0;
12     int visit[200060];
13     int pos;
14     memset(visit,0,sizeof(visit));
15     cin>>a>>b;
16     pos=a.find(b);//返回b在a 中的下标,如果a不包含b,则返回pos;一般npos=一个比较大的数,我忘了,此时pos=-1;
17  //   cout<<pos;
18     while(pos!=a.npos)
19     {
20         flag++;
21         pos=a.find(b,pos+1) ;
22         //cout<<pos;
23       // cout<<flag;
24     }
25     int ans=flag*b.size();
26     if(ans<a.size())
27         flag=1;
28     else
29         flag=0;
30     if(flag==1)
31         cout<<"No\n";
32     else
33         cout<<"Yes\n";
34     return 0;
35 }