Skip to main content
A cup of beer
  1. ACM Hub/

😋|LeetCode009|回文数

·64 words·1 min
Table of Contents

难度:Easy😋

题目 #

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false

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

  • 例如,121 是回文,而 123 不是。

思路 #

  • 显而易见,可以直接利用反转数字的方式判断回文。其方法可以见leetcode007。其中,x的部分就是高几位,sum就是低几位。因为sum是从0开始加的。
  • 需要注意特殊情况
    • 如果是奇数位数的输入x,那么分开的两部分的位数不同。此时要把sum/10。
    • 很显然,如果x是负数,必然返回false。
    • 根据数字反转算法,如果输入的x满足x%10是0,那么会出现如下情况:
      • x sum
      • 300 0
      • 30 0
      • 3 0
      • 0 0
      • 于是,就算最后sum==x了,也不能输出true!

代码实现 #

class Solution {
  public:
      bool isPalindrome(int x) { 
      if(x>=0&&x<10)return true;
      if(x<0||x%10==0)return false;
      int sum=0;
      while(sum<x){
          sum=sum*10+x%10;
          x=x/10;
      }
      // cout<<x<<' '<<sum<<endl;
     if(sum==x||sum/10==x)return true;
     return false;
    }
};