题目
题意翻译
给出由b、d、p、q四种字符组成的字符串S。请判断S是不是“镜像字符串”。
这里的“镜像字符串”是指对字符串S进行以下操作后,可得到与原字符串相同的字符串。
1.反转S。(例:"bdpq"=>"qpdb")
2.改b为d,改d为b,改p为q,改q为p(不要搞错对应关系)
分析
日常岛国水紫题……
话说倒下标一点一点反转太烦人了,所以以在网上找到了一种一行就能做完这件事的 STL 函数 :“reverse”。
具体用法如下:
string sb="trump"; reverse(sb.begin(),sb.end()); //输出的结果就是“pmurt”。
这样反转完之后再按题目要求操作并比较就行了。
代码
#include<bits/stdc++.h> using namespace std; string a,b; int main() { cin>>a; b=a; reverse(a.begin(),a.end());//快捷方便而又亲民的反转。 for(int i=0;i<a.size();i++) { if(a[i]=='b') a[i]='d';//按题目要求操作。 else if(a[i]=='d') a[i]='b'; else if(a[i]=='p') a[i]='q'; else if(a[i]=='q') a[i]='p'; } if(a==b) printf("Yes");//判断是否与原始字符串相同。 else printf("No"); return 0; }
题目原文
b
, d
, p
, q
の 44 種類の文字から構成される文字列 SS が与えられます。 SS が「鏡文」かどうかを判定してください。
ここで、「鏡文」というのは以下の操作を文字列 SS に施したときに、元と同じ文字列が得られるような文字列 SS のことです。
1.SS の順序を逆転する。
2.b
を d
に、d
を b
に、p
を q
に、q
を p
に置換する。