链接:https://www.nowcoder.com/acm/contest/109/B
来源:牛客网
给出两个串s和x
定义s中的某一位i为好的位置,当且仅当存在s的子序列 满足y=x且存在j使得i=kj成立。
问s中是否所有的位置都是好的位置。
定义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 "; 32 else 33 cout<<"Yes "; 34 return 0; 35 }