代写匿名信
题目
时间限制:1000ms内存限制:256M
题目描述
小Q想要匿名举报XX领导不务正业! 小Q害怕别人认出他的字迹。 他选择从报纸上剪裁下来英文字母组成自己的举报信。 现在小Q找来了报纸,和自己的举报信的Txt, 你能帮他确定一下是否能够完成匿名信吗?
输入描述:
第一行输入报纸上的英文。 第二行输入小Q匿名信的内容。 (1<=len(str)<=10000)
输出描述:
如果能完成输出”Yes”,否则输出”No”。
示例
示例1
输入Asdadsadas dsadas das
输出Yes
代码
这是第一稿,内存12KB,6ms,没通过
#include<stdio.h>
#include<string.h>
int main()
{
char a[1000],b[1000];
int i,x[27]={0},y[27]={0};
scanf("%s",a);
scanf("%s",b);
for(i=0;i<=strlen(a)-1;i++)
{
if(a[i]==' ') i++;
x[a[i]-'a'+1]++;
}
for(i=0;i<=strlen(b)-1;i++)
{
if(b[i]==' ') i++;
y[b[i]-'a'+1]++;
}
for(i=1;i<=26;i++)
if(x[i]<y[i]) break;
if(i>26) printf("Yes");
else printf("No");
return 0;
}
这是优化了一点点的第二稿,11KB,5ms,还是没过
#include<stdio.h>
#include<string.h>
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
char a[1000],b[1000];
int i,k,x[27]={0},y[27]={0};
scanf("%s",a);
scanf("%s",b);
k=max(strlen(a)-1,strlen(b)-1);
for(i=0;i<=k;i++)
{
if(b[i]!=' ') y[b[i]-'a'+1]++;
if(a[i]!=' ') x[a[i]-'a'+1]++;
}
for(i=1;i<=26;i++)
if(x[i]<y[i]) break;
if(i>26) printf("Yes");
else printf("No");
return 0;
}
求助
怎么再优化一下呀,超内存的话,不调用strlen子函数吗