Can you raed it croretcly?
题目描述
当你看到这个题目的时候,你是否觉得虽然有点怪,但是也不会读错了? 如果一个单词的首尾字母是一样的,中间的字母只是交换了顺序的话,人很容易“自动”纠错成正确的单词。 现在给你一个单词和其正确的字母排列顺序,请问是否符合上面的规则,让人能很容易自动“纠错”。
输入
存在多组输入样例,读入文件尾部结束。每个样例占一行,为两个字符串,字符串只含英文字母,长度不超过20。
输出
如果两个字符串一致,输出“Equal”;如果可以自动“纠错”,输出“Yes”,否则输出“No”。
样例输入
raed read it it croretcly correctly raed dear
样例输出
Yes Equal Yes No
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int Can(const char *a,const char *b){
int len1 = strlen(a);
int len2 = strlen(b);
if(len1!=len2) return 0;
if(a[0]!=b[0]||a[len1-1]!=b[len1-1]) return 0;
char c[26] = {0};
char d[26] = {0};
for(int i=1;i<len1-1;++i)
{
c[tolower(a[i])-'a']++;//tolower函数是将字符都变成小写
d[tolower(b[i])-'a']++;//实质上就是比较字母出现的次数
}
for(int i=0;i<26;++i)
{
if(c[i]!=d[i])
return 0;
}
return 1;
}
int main()
{
char a[25]={0};
char b[25]={0};
while(scanf("%s %s",a,b)!=EOF)
{
if(strcmp(a,b)==0)
printf("Equal\n");//strcmp函数用来比较a和b
else if(Can(a,b)==0)
{
printf("No\n");
}
else
printf("Yes\n");
}
return 0;
}