磨人的小妖精
时间: 1ms 内存:256M
描述:
小妖精与小泽学长今年双双考入了华东师范大学,备考期间,小妖精总是想着能否与小泽的距离更近一点,事实上,他们所生活的"二次元"世界是非常非常简单的,每一件事、每一个人都可以用一个小写的英文字符串来表示,而距离"近"则被定义为两个字符串完全一样。
小妖精有着"二次元"世界的一部分控制权,它可以以如下规则修改自己所被定义的字符串:
- 任何一个元音字母都可以被更改为任何的辅音字母
- 任何一个元音字母都可以以 $(a \rightarrow o \rightarrow e \rightarrow i \rightarrow u \rightarrow a)$ 的顺序被更改为下一个元音字母
已知小妖精被定义为字符串 $s_1$,小泽学长被定义为字符串 $s_2$,且 $s_1, s_2$ 都是完全由小写英文字母所组成的字符串。
问:小妖精能否靠自己的能力与小泽学长更近一点呢?
输入:
输入包含两行,其中第一行为字符串 $s_1$,第二行为字符串 $s_2$,且 $1\le |s_1|,|s_2| \le 100000$。
输出:
如果两人可以走得很近则输出 Yes,否则输出 No。(PS:要祝福他们呀!)
示例输入:
hello
helle
示例输出:
Yes
提示:
参考答案(内存最优[1196]):
#include<stdio.h>
#include<string.h>
#define N 100000
int main()
{
int l1,l2,i;
char s1[N]={0};
char s2[N]={0};
gets(s1);
gets(s2);
l1=strlen(s1);
l2=strlen(s2);
if(l1!=l2)
printf("No\n");
else
{
for(i=0;i<l1;i++)
{
if(s1[i]!=s2[i])
{
if(s1[i]!='a'&&s1[i]!='e'&&s1[i]!='i'&&s1[i]!='o'&&s1[i]!='u')
{
printf("No\n");
return 0;
}
}
else
continue;
}
printf("Yes\n");
}
return 0;
}
参考答案(时间最优[2]):
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char s1[100001],s2[100000];
int main()
{
int i;
int flag=0;
int l1,l2;
gets(s1);
gets(s2);
l1=strlen(s1);
l2=strlen(s2);
if(l1!=l2)
{
printf("No");
return 0;
}
for(i=0;i<l1;i++)
{
if(s1[i]!=s2[i])
{
if(s1[i]=='a'||s1[i]=='e'||s1[i]=='i'||s1[i]=='o'||s1[i]=='u')
{
s1[i]=s2[i];
}
else
{
printf("No");
return 0;
}
}
}
printf("Yes");
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。