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了,但还是要看看其他人解法,看有没有更优化的解法,这样才会进步。生命不息,学习不止!