Java 题解 | #牛的回文编号II#

牛的回文编号II

https://www.nowcoder.com/practice/0b576fd673834425878b99c736bb6c34

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param x string字符串
     * @return bool布尔型
     */
    public boolean isPalindromeNumber (String x) {
        // write code here
        // 去除前导0和后导0,保留小数点两边的数字
        String[] parts = x.split("\\.");
        String left = parts[0];
        String right = parts[1];

        // 判断左右两边是否是回文数
        return isPalindrome(removeLeadingZeros(left)) &&
               isPalindrome(removeTrailingZeros(right));
    }

    public boolean isPalindrome(String s) {
        int start = 0;
        int end = s.length() - 1;

        while (start < end) {
            if (s.charAt(start) != s.charAt(end)) {
                return false;
            }
            start++;
            end--;
        }

        return true;
    }

    public String removeLeadingZeros(String s) {
        int i = 0;
        while (i < s.length() && s.charAt(i) == '0') {
            i++;
        }
        return s.substring(i);
    }

    public String removeTrailingZeros(String s) {
        int i = s.length() - 1;
        while (i >= 0 && s.charAt(i) == '0') {
            i--;
        }
        return s.substring(0, i + 1);
    }
}

Java代码

该题是一个判断回文数的问题。回文数是指正序和倒序都相同的数字。

将输入的字符串按照小数点分隔成两部分,分别赋值给leftright

调用removeLeadingZeros函数去除左边部分的前导零,并调用removeTrailingZeros函数去除右边部分的后导零。

isPalindrome函数分别判断左右两部分是否是回文数。如果两部分都是回文数,则返回true;否则返回false

isPalindrome函数通过双指针法来判断字符串是否是回文数。从字符串的两端开始,逐个比较字符,如果不相等则返回false,直到指针相遇或交叉,则说明字符串是回文数,返回true

removeLeadingZeros函数用于去除字符串左边的前导零。通过检查字符是否为0,找到第一个非零字符的位置,然后返回从该位置开始到字符串末尾的子串。

removeTrailingZeros函数用于去除字符串右边的后导零。通过检查字符是否为0,找到最后一个非零字符的位置,然后返回从字符串开头到该位置+1的子串。

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 10:52
点赞 评论 收藏
分享
勤奋努力的椰子这就开摆:美团骑手在美团工作没毛病
投递美团等公司10个岗位
点赞 评论 收藏
分享
牛客771574427号:恭喜你,华杰
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务