LeetCode9-Palindrome Number(C++)

该博客探讨了LeetCode第9题——判断一个整数是否为回文数。内容包括问题描述、C++实现的AC代码、测试代码及其结果,以及解题总结。重点在于不将整数转换为字符串的情况下解决回文问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Description

Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.

Example 1:

Input: 121
Output: true

Example 2:

Input: -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.

Example 3:

Input: 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.

Follow up:

Coud you solve it without converting the integer to a string?

AC代码
class Solution {
public:
    bool isPalindrome(int x) {
        if(x < 0) return false;
        int y = 0, z = x;
        short int n=0;
        while(z != 0) {
            n = z % 10;
            // 这一步是因为要确保 y*10 +n < INT_MAX
            if(y > ((INT_MAX - n)/10)) return false;
            y = y*10 + n;
            z = z/10;
        }
        return (x==y);
    }
    // 这个函数仅仅是用来测试方便,提交的时候也可以不加
    void judgeResult(int x) {
        if(isPalindrome(x)) {
            cout << x << " is palindrome" <<endl;
        } else {
            cout << x << " is not palindrome" <<endl;
        }
    }
};
测试代码
int main() {
    Solution s;
    s.judgeResult(-121);
    s.judgeResult(121);
    s.judgeResult(456);
    s.judgeResult(567898765);
}
测试结果
-121 is not palindrome
121 is palindrome
456 is not palindrome
567898765 is palindrome
总结

前面有类似的题目,是判断字符串是否是回文字符串,这道题的描述里面说了在解题时应避免先转换成字符串再做回文。以上的AC代码实际上是利用了之前某一道题目里面的反转字符串,然后判断字符串反转后是否还与本身相等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值