Loading

LeetCode 回文数

回文数,顾名思义,就是顺着读和反着读是一样的,也就是两边对是对称的。

今天解决回文数,本意是想着使用队列先进先出的原则。每次去x的最低位,先放入队列中。然后从队首开始取元素,计算,每次*10,想着定义一个int,反着计算,如果计算所得数与x相等,则证明该数为回文数,如果不等则不是。简单粗暴的想法,但是天公不作美。这样写,造成溢出,无法实现。

最终优化代码,发现只取x的一半数即可,留下另一半边的数,如果两个半边相等,则为回文数,若不等,则不是回文数。贴出代码

 1 class Solution {
 2 public:
 3     bool isPalindrome(int x) {
 4         int temp = 0;
 5         //若x个位为0或者x<0,则x肯定不是回文数
 6         if((x%10==0 && x!=0) || x < 0)
 7             return false;
 8         while(x > temp)
 9         {
10             temp = temp * 10 + x % 10;
11             x = x / 10;
12         }
13         
14         if(temp == x || temp/10 == x)
15             return true;
16         else
17             return false;
18     }
19 };

继续学习,继续进步,每次写完之后AC了,但还是要看看其他人解法,看有没有更优化的解法,这样才会进步。生命不息,学习不止!

posted @ 2019-04-05 16:15  玛卡巴卡要搬砖  阅读(152)  评论(0编辑  收藏  举报