码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode9 回文数

时间:2019-10-27 01:15:56      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:char   stat   style   tco   integer   leetcode   奇数   pos   nal   

注意观察输入是int X

说明有范围

并且有正负

 特殊情况特判并且防溢出即可

负数,xxx0不会是回文数。

0是回文数

思路

先想itoa转char*然后头尾对比。但是时间空间开销有。

然后想直接int mod取首位但是首部不好取。

那就直接从尾部开始,取x的后一半翻转,对比前半部分。

辣么怎么判断到了一半奥

一般情况可以搞一个table判断先判断x的位数:

final static int [] sizeTable = { 9, 99, 999, 9999, 99999, 999999, 9999999,
                                      99999999, 999999999, Integer.MAX_VALUE };

// Requires positive x
static int stringSize(int x) {
    for (int i=0; ; i++)
        if (x <= sizeTable[i])
            return i+1;
}

这里简单的处理

while(rest>tail)即可,因为到达中间时位数多一位

这样奇数位时只需考虑tail后几位

偶数位时,tail会比rest多两位(假如不是回文数)

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

 

leetcode9 回文数

标签:char   stat   style   tco   integer   leetcode   奇数   pos   nal   

原文地址:https://www.cnblogs.com/lqerio/p/11746285.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!