首页 > 其他 > 详细

LeetCode 回文数

时间:2019-04-05 16:49:36      阅读:121      评论:0      收藏:0      [点我收藏+]

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

今天解决回文数,本意是想着使用队列先进先出的原则。每次去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了,但还是要看看其他人解法,看有没有更优化的解法,这样才会进步。生命不息,学习不止!

LeetCode 回文数

原文:https://www.cnblogs.com/chenwh-blog/p/10658998.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!