确定整数是否是回文?空间O(1)时间复杂度O(logn)

来源:互联网 发布:手机借款软件排行 编辑:程序博客网 时间:2024/06/06 13:05
class Solution {    public boolean isPalindrome(int x) {        if( x <0 || (x % 10 == 0 && x != 0)){            return false;        }                int reverseNumber = 0;        while( x > reverseNumber){            reverseNumber = reverseNumber*10 + x%10;            x /= 10;        }                return x == reverseNumber || x == reverseNumber/10;            }}

现在让我们考虑如何恢复上一半的数字。对于号码1221,如果我们这样做1221 % 10,我们得到最后一个数字1,得到第二个数字,我们需要删除最后一个数字1221,我们可以通过将它除以10来实现1221 / 10 = 122然后我们可以通过将模数乘以10得到最后一个数字122 % 10 = 2,如果我们将最后一位乘以10,并添加第二个最后一个数字1 * 10 + 2 = 12,则它给出我们想要的还原数字。继续这个过程将给我们更多的数字的恢复的数字。

现在的问题是,我们怎么知道我们已经达到了这个数字的一​​半?

由于我们将数字除以10,并将反转数乘以10,当原始数字小于反转数时,这意味着我们已经处理了一半数字。


阅读全文
0 0
原创粉丝点击