import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param x string字符串
     * @return bool布尔型
     */
    public boolean isPalindromeNumber (String x) {
        // write code here
        int dotIndex = x.indexOf('.'); // 找到小数点的索引位置

        // 获取去除前导0和后导0后的左边和右边部分
        String leftPart = x.substring(0, dotIndex).replaceAll("^0+",""); // 去除左边的前导0
        String rightPart = x.substring(dotIndex + 1).replaceAll("0+$",""); // 去除右边的后导0

        // 检查左边和右边部分是否都是回文数
        return isPalindrome(leftPart) && isPalindrome(rightPart);
    }

// 辅助函数:检查字符串是否是回文数
    private boolean isPalindrome(String str) {
        int left = 0;
        int right = str.length() - 1;

        while (left < right) {
            if (str.charAt(left) != str.charAt(right)) {
                return false; // 如果不相等,则不是回文数
            }
            left++;
            right--;
        }

        return true; // 遍历完成,是回文数
    }
    }

考察的知识点包括:字符串操作、循环和条件语句、字符串的操作,如查找和截取、替换

代码的文字解释如下:

  • 使用 indexOf 方法找到小数点的索引位置,分离出浮点数的整数部分和小数部分。
  • 使用 replaceAll 方法结合正则表达式,去除整数部分和小数部分的前导零和后导零。
  • 调用 isPalindrome 辅助函数分别判断去除前导零和后导零后的整数部分和小数部分是否是回文数。
  • isPalindrome 函数用于检查一个字符串是否是回文数。它使用双指针从两端向中间遍历,判断字符是否对称。
  • 如果整数部分和小数部分都是回文数,返回 true;否则返回 false。