首页 > 试题广场 >

回文数字

[编程题]回文数字
  • 热度指数:38707 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
在不使用额外的内存空间的条件下判断一个整数是否是回文。
回文指逆序和正序完全相同。


数据范围:
进阶: 空间复杂度 ,时间复杂度

提示:
负整数可以是回文吗?(比如-1)
如果你在考虑将数字转化为字符串的话,请注意一下不能使用额外空间的限制
你可以将整数翻转。但是,如果你做过题目“反转数字”,你会知道将整数翻转可能会出现溢出的情况,你怎么处理这个问题?
示例1

输入

121

输出

true
示例2

输入

122

输出

false
function isPalindrome( x ) {
    // write code here
    // 如果是负数直接淘汰 一位数直接晋级
    if(x<0) return false; if(x<10) return true;
    // 将数字转为字符串在分割为数组反转后重新成为字符串后转为数字
    if(x==parseInt(x.toString().split('').reverse().join(''))) return true;
    return false;
}

发表于 2022-01-19 22:10:02 回复(0)
如果时js语言的话,可以直接:
```js
function isPalindrome( x ) {
    returnx.toString().split('').reverse().join('') == x;
}
```
发表于 2021-12-16 13:28:34 回复(0)
在整数反转的基础上做这道题 带溢出判断
function isPalindrome( x ) {
    // write code here
   if(x>=0){ /// >=0的时候做整数反转 判断翻转后的数字是否和原数字相等
        let res = 0,a = x
    while(a!==0){
        res = res*10 + a% 10
        a = (a/10) |0
    }
     (res|0) === res? res : 0
     return res == x ? true : false
    }
    return false  //小于0 肯定不是回文数字
}

发表于 2020-12-28 16:35:16 回复(0)
JS版本:
/**
  * 
  * @param x int整型 
  * @return bool布尔型
  */
function isPalindrome( x ) {
    // write code here
    if(x<0 || x!==0 && x%10===0)return false;
    // 当x是个位数时一定是回文
    if(x<=9)return true
    var halfReverse = 0;
    while(x > halfReverse){
        halfReverse = halfReverse*10+x%10;
        x = parseInt(x/10);
    }
    return (halfReverse===x||halfReverse/10 === x)
    
}
module.exports = {
    isPalindrome : isPalindrome
};


发表于 2020-06-09 00:35:10 回复(0)