Description
Do you feel weird when reading the problem title? You can understand word meanning correctly even if its spelling is wrong.
According to research, if the initial and last letter of the word are right, and just swap the others, human can correct the spelling of the word automatically.
Now, giving you a word and its correct spelling, can you correct it automatically?
Input
The input contains several test cases.
Each test case consists of one line with two strings, each string only contains lowercase letter, and its length is no more than 20.
Output
Output “Equal” when the two strings are same; output “Yes” when you can correct it, otherwise outoput “No”.
Sample
Input
raed read
it it
croretcly correctly
raed dear
Output
Yes
Equal
Yes
No
Hint
题目大意:
这样的单词可以被纠正拼写:
- 1.第一个和最后一个字母正确
- 2.内部字母交换位置后可以得到正确单词 (统计一下就行)
- 3.长度与正确单词相同(隐藏条件,题目没说但是好像会卡一下)
输出有三种情况:
- Equal(拼写正确)
- Yes(可纠正)
- No(不可纠正)
…
水题
C++
#include <iostream>
#include <cstring>
#include <cstdio>
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
int a[30], b[30];
int main()
{
char s1[50], s2[50];
while(~scanf("%s%s",s1,s2)){
mem(a,0);
mem(b,0);
int flag = 0;
int l1 = strlen(s1);
int l2 = strlen(s2);
if(strcmp(s1,s2) == 0){
flag = 1;
}
else if(l1 == l2){
for(int i=0;i<l1;i++){
a[s1[i] - 'a'+1]++;
b[s2[i] - 'a'+1]++;
}
int f = 1;
for(int i=1;i<=26;i++){
if(a[i] != b[i]){
f = 0;
}
}
if(f && s1[0] == s2[0] && s1[l1-1] == s2[l1-1]){
flag = 2;
}
}
if(flag == 0)
cout << "No" << endl;
else if(flag == 1)
cout << "Equal" << endl;
else if(flag == 2)
cout << "Yes" <<endl;
}
return 0;
}
别卷了家人们,孩子只会写水题