L - Can you raed it croretcly? from: SDUT 2021 Summer Individual Contest - 1(for 20)

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;
}

别卷了家人们,孩子只会写水题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值