题解 AT2201 【鏡文 / Mirror String】

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

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

  • 1 先将字符串倒序存放

  • 2 按照规则改变字母

  • 3 比较

Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#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;
}