题解 AT2201 【鏡文 / Mirror String】

一道简单的字符串模拟,刷难度真给力

本蒟蒻的思路比较麻烦,但个人认为比较好理解

  • 1 先将字符串倒序存放

  • 2 按照规则改变字母

  • 3 比较

Code:

#include<bits/stdc++.h>
using namespace std;
char s1[100010],s2[100010];
int len;
int main()
{
    cin>>s1;
    for(int i=strlen(s1)-1; i>=0; i--)
    {
        s2[len++]=s1[i];//倒序存放
    }
    for(int i=0; i<strlen(s2); i++)
    {
        switch(s2[i])//按照规则改变字母
        {
            case 'b':
            {
                s2[i]='d';
                break;
            }
            case 'd':
            {
                s2[i]='b';
                break;
            }
            case 'p':
            {
                s2[i]='q';
                break;
            }
            case 'q':
            {
                s2[i]='p';
                break;
            }
        }
    }
    if(strcmp(s1,s2)==0) cout<<"Yes"<<endl;//比较,注意如果两个字符串一样,strcmp返回0
    else cout<<"No"<<endl;//记得换行
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/WKAHPM/p/11628886.html