列表

详情


NC56. 回文数字

描述

在不使用额外的内存空间的条件下判断一个整数是否是回文。
回文指逆序和正序完全相同。


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

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

示例1

输入:

121

输出:

true

示例2

输入:

122

输出:

false

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 2ms, 内存消耗: 324KB, 提交时间: 2021-03-27

class Solution {
public:

    bool isPalindrome(int x) 
    {
        if(x<0 ||x!=0&&x%10==0)
        {
            return false;
        }
        int reverse=0;
        while(x>reverse)
        {
            reverse=reverse*10+x%10;
            x=x/10;
        }
        return (reverse==x || reverse/10==x);
    }
};

C++ 解法, 执行用时: 2ms, 内存消耗: 328KB, 提交时间: 2021-06-06

class Solution {
public:
    /**
     * 
     * @param x int整型 
     * @return bool布尔型
     */
    bool isPalindrome(int x) {
        // write code here
        long x_copy = 0;
        int tmp = x;
        while(tmp>0)
        {
            x_copy = x_copy * 10 + tmp%10;
            tmp = tmp / 10;
        }
        if(int(x_copy) == x) return true;
        return false;
    }
};

C++ 解法, 执行用时: 2ms, 内存消耗: 332KB, 提交时间: 2021-06-06

class Solution {
public:
    /**
     * 
     * @param x int整型 
     * @return bool布尔型
     */
    bool isPalindrome(int x) {
        // write code here
        vector<int> a;
        int n=0;
        if(x<0)return false;
        while(x){
            n++;
            a.resize(n);
            a[n-1] = x%10;
            x/=10;
        }
        for(int i=0;i<(n+1)/2;i++){
            if(a[i] != a[n-i-1])return false;
        }
        return true;
    }
};

C++ 解法, 执行用时: 2ms, 内存消耗: 332KB, 提交时间: 2020-11-18

class Solution {
public:
    /**
     * 
     * @param x int整型 
     * @return bool布尔型
     */
   bool isPalindrome(int x) {
	// write code here
	if (x < 0)
		return false;
	if (x >= 0 && x <= 9)
	{
		return true;
	}
	int a = x;
	int num1 = 0;
	int num2 = 0;
	while (a)
	{
		num1++;
		a = a / 10;
	}
	while (num1 > 1)
	{
		int a1 = x % 10;
		int a2 = x / pow(10, num1 - 1);
		if (a1 == a2)
		{
			x = x / 10;
			int a = pow(10, num1 - 2);
			x = x % a;
			num1 = num1 - 2;
			continue;
		}
		else
		{
			return false;
		}
	}
	return true;

}
};

C++ 解法, 执行用时: 2ms, 内存消耗: 336KB, 提交时间: 2021-06-05

class Solution {
public:
    /**
     * 
     * @param x int整型 
     * @return bool布尔型
     */
    bool isPalindrome(int x) {
        // write code here
        if(x < 0) return false;
        int reverse = 0;
        while(x > reverse){
            reverse = reverse * 10 + x % 10;
            x /= 10;
        }
        return (x == reverse) || (x == reverse / 10);
    }
};

上一题