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代码
该题是一个判断回文数的问题。回文数是指正序和倒序都相同的数字。
将输入的字符串按照小数点分隔成两部分,分别赋值给left和right。
调用removeLeadingZeros函数去除左边部分的前导零,并调用removeTrailingZeros函数去除右边部分的后导零。
isPalindrome函数分别判断左右两部分是否是回文数。如果两部分都是回文数,则返回true;否则返回false。
isPalindrome函数通过双指针法来判断字符串是否是回文数。从字符串的两端开始,逐个比较字符,如果不相等则返回false,直到指针相遇或交叉,则说明字符串是回文数,返回true。
removeLeadingZeros函数用于去除字符串左边的前导零。通过检查字符是否为0,找到第一个非零字符的位置,然后返回从该位置开始到字符串末尾的子串。
removeTrailingZeros函数用于去除字符串右边的后导零。通过检查字符是否为0,找到最后一个非零字符的位置,然后返回从字符串开头到该位置+1的子串。

叮咚买菜工作强度 221人发布
查看3道真题和解析