LeetCode之回文数(九)

举报
liuzhen007 发表于 2021/05/27 18:35:54 2021/05/27
【摘要】 目录   题目 解题 题目 (原题链接:https://leetcode-cn.com/problems/palindrome-number) 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: ...

目录

 

题目

解题


题目

(原题链接:https://leetcode-cn.com/problems/palindrome-number)

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例 1:

输入: 121
输出: true
示例 2:

输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:

输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。

解题

分析:通过题目的示例,我们知道了负数和个位数是0的情况属于非回文数,但是同时我们应该注意到0是一个特殊的边界值,是个位数为0的非回文数中的特例,0其实是一个回文数。剩下的情况就比较正常了,具体请看代码。

代码:


  
  1. class Solution {
  2. public:
  3. bool isPalindrome(int x) {
  4. if (x < 0 || x % 10 == 0 && x != 0) { // 注意特殊边界值0
  5. return false;
  6. }
  7. int rev = 0; // 记录反转过来的数字
  8. while (x > rev) {
  9. rev = rev * 10 + x % 10;
  10. x = x / 10;
  11. }
  12. if (x == rev || x == rev/10) { // 考虑奇偶位数的两种情况
  13. return true;
  14. } else {
  15. return false;
  16. }
  17. }
  18. };

执行结果:

文章来源: liuzhen.blog.csdn.net,作者:Data-Mining,版权归原作者所有,如需转载,请联系作者。

原文链接:liuzhen.blog.csdn.net/article/details/106743391

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。