9、回文数

  1. 9、回文数
    1. 示例 1:
    2. 示例 2:
    3. 示例 3:
  2. 题解
    1. 1、求一半,做比较

9、回文数

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

示例 1:

输入: 121
输出: true

示例 2:

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

示例 3:

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

  • 进阶:

你能不将整数转为字符串来解决这个问题吗?

题解

1、求一半,做比较

public boolean isPalindrome(int x) {
    // 非法情况判定
    if (x < 0 || (x % 10 == 0 && x != 0)) return false;
    int revertedNumber = 0;
    // 循环求,x的后n/2+1位的数,n为x的总位数
    while (x > revertedNumber) {
        // 更新后n/2+1位
        revertedNumber = revertedNumber * 10 + x % 10;
        // 更新x
        x /= 10;
    }
    // n偶直接比较,n为奇数前n/2+1位先除以10,再比较
    return x == revertedNumber || x == revertedNumber / 10;
}

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1056615746@qq.com

💰

Title:9、回文数

Count:239

Author:攀登

Created At:2020-07-26, 00:19:44

Updated At:2024-06-15, 15:52:32

Url:http://jiafeimao-gjf.github.io/2020/07/26/9%E3%80%81%E5%9B%9E%E6%96%87%E6%95%B0/

Copyright: 'Attribution-non-commercial-shared in the same way 4.0' Reprint please keep the original link and author.

×

Help us with donation