Java 题解 | #牛的回文编号III#
牛的回文编号III
https://www.nowcoder.com/practice/6af8b6e39b004329a48cc2cd823e5b30
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param x int整型 * @return bool布尔型 */ public boolean isPalindromeNumberIII (int x) { // write code here int bitCount = 32; for (int i = 0; i < bitCount / 2; i++) { int leftBit = (x >> (bitCount - 1 - i)) & 1; int rightBit = (x >> i) & 1; if (leftBit != rightBit) { return false; } } return true; } }
Java代码
考察的知识点是位运算和回文数的判断。
代码中的方法isPalindromeNumberIII
接收一个整数x
作为参数,返回一个布尔值。
确定整数的位数为32位(32-bit有符号整数)。
使用一个循环来逐位判断是否为回文数。循环从最高位开始到中间位置(即bitCount / 2
)。在每一次循环中,通过右移操作和与运算获取最高位和最低位的值。
通过右移操作(x >> (bitCount - 1 - i))
和与运算& 1
,可以得到第i位的值。
判断最高位和最低位的值是否相等。如果不相等,则说明整数的二进制表示不是回文数,直接返回false。如果循环结束后都没有返回false,则说明所有位上的值都相等,整数的二进制表示是回文数,返回true。