您当前的位置: 首页 >  leetcode

LeetCode Algorithm 9. 回文数

发布时间:2021-12-04 20:33:56 ,浏览量:0

9. 回文数

Ideas

算法:迭代 数据结构:一个变量就OK 思路:

  1. 首先负数肯定都不是回文数,所以遇到负数可以直接return false;
  2. 针对最后一位是0的情况,因为0不能作为开头,所以只要最后一位数字是0并且这个数字本身不是0,也可以直接return false;
  3. 突然间想到之前做的LeetCode Algorithm 7. 整数反转,根据回文数的定义,把一个整数反转之后那么它应该还等于它本身;
  4. 直接翻转的话有可能会导致int类型整数溢出,所以需要优化一下:因为回文数是对称的,所以从中间位置往后的翻转操作都是多余的,只需要后一半数就可以了;
  5. 针对奇数个位数的回文数,可以直接把翻转后的数字的最后一位去掉。
Code C++
class Solution { public: bool isPalindrome(int x) { if (x < 0 || (!(x % 10) && x)) return false; int rev = 0; while (rev < x) { rev = rev * 10 + x % 10; x /= 10; } return rev == x || rev / 10 == x; } }; 
Python
class Solution: def isPalindrome(self, x): if x<0: return False if x<10: return True if x % 10 == 0: return False x_str = str(x) if x_str[::-1] == x_str: return True return False 
关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    108697博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.2845s