1027A. Palindromic Twist#变形回文串
题目内容:http://codeforces.com/contest/1027/problem/A
题目解析:输入T组字符串,每个字符串都必须改变一次,每个字母改变的规则是变成相邻的字母,字母a只能变b,z只能变y。改变后 的字符依旧是否能够变成回文串,就输出YES,否则就输出NO。注意,相邻的字母并没有固定是左边还右边,所以要考虑分成两种情况,一种本身就是回文串的就输出YES,不是回文串的判断对应位置字符asc码差是否等于2。
#include<iostream> #include<cmath> using namespace std; int main() { int n,t,flag; string s; cin>>t; while(t--) { flag=0; cin>>n>>s; for(int i=0; i<n/2; i++) if(s[i]!=s[n-i-1]&&abs(s[i]-s[n-i-1])!=2) {//用ascll码理解,满足:既不相等且相差非2 puts("NO"); flag=1; break; } if(!flag)puts("YES"); } return 0; }
参考出处:https://blog.csdn.net/memory_qianxiao/article/details/81838111
个人分享,欢迎指导,未经允许,请勿转载。谢谢!