磨人的小妖精

时间: 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;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。