import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
int t=scanner.nextInt();
while(t-->0) {
String string=scanner.next();
// 首先要明确,bdpq这四个字母是可以相互转换的,也就是同一等价类,那么我们就可以把这些字母统一一下
// nu同理
// 然后就是m可以拆成nn,w可以拆成vv,我们索性全部都拆
string=string.replace('d', 'b').replace('p', 'b').replace('q', 'b');
string=string.replace("m", "nn").replace("w", "vv").replace('n', 'u');
if(huiwen(string)) {
System.out.println("YES");
}else {
System.out.println("NO");
}
}
}
public static boolean huiwen(String string) {
StringBuilder sBuilder=new StringBuilder(string).reverse();
if(string.equals(sBuilder.toString())) {
return true;
}
return false;
}
}
这题看起来很复杂,但是说白了,题目说了一堆,就是想告诉我们bdpq、nu是等价的,然后m和w可以拆分,既然要判断能不能变成回文,那么就干脆全部标准化,把同一类的统一为同一个字母,但是这里又有一个问题,就是如果我在拆分m前把n和u标准化,那么后面又会出现n,导致没有彻底标准化,所以n和u应该放在最后进行标准化



京公网安备 11010502036488号