回文数(Parlindrome)

和光同尘 回文数是这样的数,即一个数从左往右数和从右往左数是同样的结果。比如aba,121. leetcode有一道题就是判断一个数是否是回文数。 问题描述:给定一个整数(int 类型),如果是回文数,函数返回为true. bool isPalindrome(int x){ } 1.自然的想到将数字转为字符,利用python中的字符翻转读取然后与原字符进行判断。str(x)==str(x)[:-1] 2.如果不能使用字符的话。可以考虑对数字进行翻转,对整个数字翻转可能会超界。因此可以考虑对数字的一半进行翻转。如何判断到了数字的一半呢?不妨设我们翻转的数为rev. while(x>rev) { rev=rev*10+x%10; x/=10; } 如上,当rev>x的时候,rev有和原数一半的位数或者一半的位数多一位。因此当rev/10或者rev和x(原数x的前一半)相等时,该数x是回文数。同时,当x是负数的时候,该数显然不为回文数。最后代码如下: bool isPalindrome(int x){ int rev=0; if(x<0||(x%10==0&&x!=0)) { return false; } while(x>rev) { rev=rev*10+x%10;…

0 Comments