#35. 回文校验器

回文校验器

题目描述

小蓝最近在学习字符串知识。他定义了一个“完美回文串”:一个非空字符串,如果正着读和倒着读完全一样,则称为回文串;如果该回文串的长度是偶数,且中间两个字符相同,则称为“完美回文串”。

例如:

  • "aba" 是回文串,但长度是奇数,不是完美回文串。
  • "abba" 是回文串,长度是偶数,中间两个字符都是 'b',所以是完美回文串。
  • "aaaa" 是回文串,长度是偶数,中间两个字符都是 'a',所以是完美回文串。
  • "abca" 不是回文串(因为 a != c),所以不是完美回文串。

现在给你一个小写英文字母组成的字符串 SS,请你判断它是否是“完美回文串”。如果是,输出 YES;否则,输出 NO。

输入格式

第一行包含一个整数 TT,表示测试数据的组数。 接下来 TT 行,每行包含一个小写英文字母组成的字符串 SiS_i。

输出格式

对于每组数据,输出一行:

  • 如果 SiS_i 是完美回文串,输出 YES;
  • 否则,输出 NO。

样例

5
abba
aba
aaaa
abc
aa
YES
NO
YES
NO
YES

样例解释

  • 第 1 组:"abba" 是回文串,长度为 4(偶数),中间两个字符都是 'b',所以输出 YES。
  • 第 2 组:"aba" 是回文串,但长度为 3(奇数),所以输出 NO。
  • 第 3 组:"aaaa" 是回文串,长度为 4(偶数),中间两个字符都是 'a',所以输出 YES。
  • 第 4 组:"abc" 不是回文串,所以输出 NO。
  • 第 5 组:"aa" 是回文串,长度为 2(偶数),中间两个字符都是 'a',所以输出 YES。

数据范围与提示

  • 1≤T≤1051 \le T \le 10^5
  • 1≤∣Si∣≤1051 \le |S_i| \le 10^5
  • 所有测试点中 ∑∣Si∣≤106\sum |S_i| \le 10^6
  • 字符串 SiS_i 仅由小写英文字母组成。

提示:

  1. 首先判断字符串是否是回文串。如果不是,直接输出 NO。
  2. 如果是回文串,再检查长度是否为偶数。如果是奇数,输出 NO。
  3. 如果长度是偶数,检查中间两个字符是否相同。如果相同,输出 YES;否则,输出 NO。