当前位置: 面试刷题>> 回文数(经典算法150题)


### 题目描述 **题目:判断一个整数是否是回文数** 编写一个函数,判断给定的整数是否是回文数。回文数是指正读和反读都相同的数。例如,121是一个回文数,而123则不是。 注意: 1. 你不能只是将整数转换为字符串来解决这个问题。 2. 输入的整数是一个32位有符号整数,其范围在 [-2^31, 2^31 - 1] 内。 ### 示例 - 输入: 121 - 输出: true - 输入: -121 - 输出: false 解释:因为负数不包括在回文数的范围内(这里假设题目要求的是非负整数,因为题目没有明确说明,但常见解释如此)。 - 输入: 10 - 输出: false ### PHP 示例代码 ```php function isPalindrome($x) { // 处理负数和非整数情况 if ($x < 0 || (int)$x != $x) { return false; } $reversed = 0; $original = $x; while ($x > 0) { $pop = $x % 10; $x = (int)($x / 10); $reversed = $reversed * 10 + $pop; } return $original == $reversed; } // 测试示例 echo isPalindrome(121) ? "true" : "false"; // 输出 true echo "\n"; echo isPalindrome(-121) ? "true" : "false"; // 输出 false echo "\n"; echo isPalindrome(10) ? "true" : "false"; // 输出 false ``` ### Python 示例代码 ```python def isPalindrome(x): # 处理负数和非整数情况 if x < 0 or (x % 1 != 0): return False reversed_x = 0 original_x = x while x > 0: pop = x % 10 x = x // 10 reversed_x = reversed_x * 10 + pop return original_x == reversed_x # 测试示例 print(isPalindrome(121)) # 输出 True print(isPalindrome(-121)) # 输出 False print(isPalindrome(10)) # 输出 False ``` ### JavaScript 示例代码 ```javascript function isPalindrome(x) { // 处理负数和非整数情况 if (x < 0 || x % 1 !== 0) { return false; } let reversed = 0; let original = x; while (x > 0) { let pop = x % 10; x = Math.floor(x / 10); reversed = reversed * 10 + pop; } return original === reversed; } // 测试示例 console.log(isPalindrome(121)); // 输出 true console.log(isPalindrome(-121)); // 输出 false console.log(isPalindrome(10)); // 输出 false ``` 以上代码示例均遵循了题目要求,未使用字符串操作来判断回文数,而是通过反转数字的一半来进行比较。
推荐面试题