题目链接:http://codeforces.com/contest/1023/problem/A
#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
#define mod 1000000007
#define For(i,m,n) for(int i=m;i<=n;i++)
#define Dor(i,m,n) for(int i=m;i>=n;i--)
#define LL long long
#define lan(a,b) memset(a,b,sizeof(a))
using namespace std;
char a[200005],b[200005];
int n,m;
int id;
bool pin()
{
int sum=0;
For(i,0,n-1)
if(a[i]=='*')
{sum++;id=i;break;}
if(sum==0)
{
if(n!=m)
return false;
For(i,0,n-1)
if(a[i]!=b[i])
return false;
}
int c=inf,d=-1;
for(int i=0;i<id;i++)
if(a[i]!=b[i])
return false;
c=id-1;
for(int i=n-1;i>id;i--)
if(a[i]!=b[m-(n-i)])
return false;
d=m-(n-id-1);
// printf("%d %d\n",c,d);
if(d>=c)
return true;
else
return false;
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
lan(a,0);
lan(b,0);
scanf("%s%s",a,b);
if(n>m+1)
{
printf("NO\n");
continue;
}
if(pin())
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
本文提供了一道CodeForces A级题目(http://codeforces.com/contest/1023/problem/A)的C++解决方案。该算法通过比较两个字符串,并检查特定条件来判断是否可以在给定条件下将一个字符串转换为另一个字符串。
765

被折叠的 条评论
为什么被折叠?



