CF420A Start Up 题解

Content

给定一个长度为 \(n\) 的字符串,求这个字符串整个反转过来后是否和原字符串一样。

数据范围:\(1\leqslant n\leqslant 10^5\)

Solution

众所周知,反转过来后一模一样的大写字母仅有以下这些:

\(\texttt{AHIMOTUVWXY}\)

所以这就相当于在判断回文串的基础上再判断是否是以上这些字符,直接开个左节点和右节点,往中间边遍历边判断即可。

Code

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
using namespace std;

string a;

int main() {
	cin >> a;
	int len = a.size();
	for(int i = 0, j = len - 1; i <= j; ++i, --j)
		if(!(a[i] == a[j] && (a[i] == 'A' || a[i] == 'H' || a[i] == 'I' || a[i] == 'M' || a[i] == 'O' || a[i] == 'T' || a[i] == 'U' || a[i] == 'V' || a[i] == 'W' || a[i] == 'X' || a[i] == 'Y')))
			return printf("NO"), 0;
	return printf("YES"), 0;
}
posted @ 2021-12-17 14:18  Eason_AC  阅读(30)  评论(0)    收藏  举报