9. Palindrome Number
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的过程中很容易出错,但是别人的方法却没有这种问题,所以再遇到这种问题,尽量在同一个数上进行操作,以此来避免数值范围的问题!
以上是关于9. Palindrome Number的主要内容,如果未能解决你的问题,请参考以下文章