美文网首页
leetcode题目9: 回文数(java)

leetcode题目9: 回文数(java)

作者: castlet | 来源:发表于2020-05-18 22:46 被阅读0次

题目描述

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例

输入: 121
输出: true
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。

解题思路

  1. 考虑反转数字的一半,如果该数字是回文,则其后半部分反转肯定与原始数字的前半部分数字相同。
  2. 如何判断已经反转了数字的一半?如果已经反转的数字大于等于原始数字的时候,就意味着反转了一半的数字。

代码

public boolean isPalindrome(int x) {
    // 负数肯定不是回文
    // 如果最低位为0 , 除了数字0之外,其他的肯定也不是回文
    if (x < 0 || (x != 0 && x % 10 == 0)) {
        return false;
    }

    int revertNum = 0;
    while (revertNum < x) {
        revertNum = x % 10 + revertNum * 10;
        x = x / 10;
    }
    // 当数字长度为奇数的时候, 可以通过revertNum / 10来去除中位的数字,因为中位的数字不影响回文的比较。
    return x == revertNum || x == revertNum / 10;
}

相关文章

网友评论

      本文标题:leetcode题目9: 回文数(java)

      本文链接:https://www.haomeiwen.com/subject/pdsmohtx.html