小b有两个字符串 s1 和 s2,她想知道能否重排列s1,使得重排列后的串为s2的子串。
样例解释:将acb重排列cba,为dzccbaio的子串。
输入
第一行输入一个小写字母组成的字符串s1;
第二行输入一个小写字母组成的字符串s2;
其中s1、s2长度≤10000.
输出
若能,输出“True”;
否则,输出“False”。
输入样例
acb
dzccbaio
输出样例
True
#include<bits/stdc++.h>
using namespace std;
string a,b;
int s1[30],s2[30],bo=0,j;
int main()
{
ios::sync_with_stdio(false);
cin>>a>>b;
int yi=a.length(),er=b.length();
for(int i=0;i<yi;i++)
s1[a[i]-'a']++;
for(int i=0;i<=(er-yi);i++)
{
memset(s2,0,sizeof(s2));
for(int j=i;j<=(i+yi-1);j++)
s2[b[j]-'a']++;
for(j=0;j<26;j++)
if(s2[j]!=s1[j])
break;
if(j>=26)
{
bo=1;break;
}
}
if(bo) cout<<"True";
else cout<<"False";
return 0;
}