zoukankan      html  css  js  c++  java
  • 9. Palindrome Number

    文章目录如下

    (1)自己的思路

    (2)自己的代码

    (3)别人的思路

    (4)别人的代码

    (5)对比自己的不足之处

    (1)自己的思路

    又碰见回文数了,不过这次要简单很多,因为这次仅仅是判断一个数字x是不是回文数,那么只需要将一个整数进行调转即可,然后保存为一个新的数字r,最后比较x与r是否相等。期间牵扯到的取余,除法运算想必看过代码之后就会理解,不多说,直接贴代码

    (2)自己的代码

    class Solution {
    public:
        bool isPalindrome(int x) {
            
            int tmpx = x;
            int tmp = 0;
            
            while(tmpx!=0)
            {
                tmp = tmp*10 + (tmpx%10);
                tmpx = tmpx/10;
            }
            
            return (tmp==x);
        }
    };

    (3)别人的思路

    每次比较整数x的最高位与最低位,然后将x进行拆解,去掉x原有的最高位与最低位,然后继续进行比较,如果有一次不满足情况,那么便判断不是回文数,否则直到比较结束后,返回该数字是回文数。

    (4)别人的代码

    class Solution {
    public:
        bool isPalindrome(int x) {
            if (x < 0) return false;
            int d = 1; // divisor
            while (x / d >= 10) d *= 10;
    
            while (x > 0) {
                int q = x / d;  // quotient
                int r = x % 10;   // remainder
                if (q != r) return false;
                x = x % d / 10;
                d /= 100;
            }
            return true;
        }
    };

    (5)对比自己的不足之处

    我是根据原数x构造了另外一个数字r,其中r的顺序与x的顺序相反。别人的思路只在x上操作,一次比较数的开始与末尾的数字是否相等。

    其中我这种方法有一个致命的缺点,就是当整数特别大的时候(超出了int范围),在构造r的过程中很容易出错,但是别人的方法却没有这种问题,所以再遇到这种问题,尽量在同一个数上进行操作,以此来避免数值范围的问题!

  • 相关阅读:
    第四课:数字系统抽象
    第三课:叠加法和戴维南法
    第二课:基本电路法
    电路和电子学第一课:集总电路抽象
    第三十六课:告别演出
    第三十五课:多普勒效应和宇宙大爆炸
    第三十四课:光栅和分辨率
    第三十三课:干涉
    第三十二课:复习课
    第三十一集:彩虹
  • 原文地址:https://www.cnblogs.com/magicy/p/5344545.html
Copyright © 2011-2022 走看看