这是一个字符串处理问题,我们需要判断给定的字符串是否满足轴对称的性质:

  1. 首先,我们需要明确轴对称的规则:单个字母自身对称的有:i、l、m、n、o、u、v、w、x。互相对称的字母对有:p 和 q、b 和 d。其他字母都不是对称的。
  2. 判断方法:从字符串两端向中间比较。左边第  个字符与右边第  个字符必须满足对称关系。如果某一对字符不满足对称关系,则整个字符串不是轴对称的。
  3. 具体实现:创建一个映射表,指定每个字符的对称字符。使用双指针法,从两端向中间遍历并比较。
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        // 构建对称字符映射表
        Map<Character, Character> symMap = new HashMap<>();
        String selfSym = "ilmnouvwx";
        for (int i = 0; i < selfSym.length(); i++) {
            char c = selfSym.charAt(i);
            symMap.put(c, c);
        }
        symMap.put('b', 'd');
        symMap.put('d', 'b');
        symMap.put('p', 'q');
        symMap.put('q', 'p');

        for (int i = 0; i < n; i++) {
            String s = sc.next();

            boolean isSymmetric = true;
            int left = 0, right = s.length() - 1;

            while (left <= right) {
                char leftChar = s.charAt(left);
                char rightChar = s.charAt(right);

                if (!symMap.containsKey(leftChar) || symMap.get(leftChar) != rightChar) {
                    isSymmetric = false;
                    break;
                }
                left++;
                right--;
            }

            System.out.println(isSymmetric ? "Yes" : "No");
        }
    }
}