当前位置: 面试刷题>> 回文数(经典算法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
```
以上代码示例均遵循了题目要求,未使用字符串操作来判断回文数,而是通过反转数字的一半来进行比较。