AT2201 鏡文 / Mirror String

题目

题意翻译

给出由b、d、p、q四种字符组成的字符串SS。请判断SS是不是“镜像字符串”。

这里的“镜像字符串”是指对字符串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;
}

题目原文

bdpq の 44 種類の文字から構成される文字列 SS が与えられます。 SS が「鏡文」かどうかを判定してください。

ここで、「鏡文」というのは以下の操作を文字列 SS に施したときに、元と同じ文字列が得られるような文字列 SS のことです。

1.SS の順序を逆転する。

2.b を d に、d を b に、p を q に、q を p に置換する。

猜你喜欢

转载自www.cnblogs.com/DARTH-VADER-EMPIRE/p/10970318.html
今日推荐