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