9. Palindrome Number

这篇博客介绍了判断一个整数是否为回文数的两种方法。第一种方法通过不断取出数字的各位并重组,第二种方法利用栈将数字的各位存储并比较。虽然栈的方法占用额外空间,但能有效检查回文特性。

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

Palindrome

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

一,第一种方法,分别取出整数的各位数,然后用末尾的数字乘最高位的位数。以121为例,第一次取出个位1,第二次取出十位数字2,将1乘以10加成2.第三次取出百位数字1,将12乘以10加上百位数字1.如果和原来的数字相同。则为回文数。

 bool isPalindrome(int x) {
           if(x<0){
               return false;
           }
           int num = x,flag = 0;
           while(num!=0){
               flag = flag * 10 + num%10;
               num = num/10;
           }
           return flag == x;           
    }

第二种方法用到栈的思想。将数字的各位作为字符串分别入栈。
同时将字符串也存在数组中。将字符串依次出栈与数组比较。如果完全一样,则为回文数。

class Solution {
public:
    bool isPalindrome(int x){
        stack<int> s;
        int check[1000];
        if(x<0){
            return false;
        }
        //将x的各位数分别存入数组和压入栈中
        for(int i =0;x>0;i++){
            s.push(x%10);
            check[i] = x%10;
            x = x/10;
        }

        int j = 0;
        while(!s.empty()){
            if(s.top()!=check[j]){
                return false;
            }
            j++;
            s.pop();
        }
        return true;
    }  
};

缺点

用栈的思想,将数字先转化为字符串。需要一块额外的空间存储。又慢又占内存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值