• 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的过程中很容易出错,但是别人的方法却没有这种问题,所以再遇到这种问题,尽量在同一个数上进行操作,以此来避免数值范围的问题!

  • 相关阅读:
    csp-s模拟 77/78 (达哥专场)
    csp-s 模拟76
    csp-s模拟75 导弹袭击
    反思集
    模拟69/70 考试反思
    抱大腿
    csp-s模拟61 甜圈
    实时记录
    好题思路集汇
    半集训反思 8.28 「路,还是要自己走的」
  • 原文地址:https://www.cnblogs.com/magicy/p/5344545.html
Copyright © 2020-2023  润新知