【简单】判断一个数是否是回文数-Java
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程大家好!欢迎来到我的网站! 人工智能被认为是一种拯救世界、终结世界的技术。毋庸置疑,人工智能时代就要来临了,科… 继续阅读 前言https://www.captainai.net/troubleshooter
package live.every.day.ProgrammingDesign.CodingInterviewGuide.Other; /** * 判断一个数是否是回文数 * * 【题目】 * 定义回文数的概念如下: * •如果一个非负数左右完全对应,则该数是回文数,例如:121,22等。 * •如果一个负数的绝对值左右完全对应,也是回文数,例如:-121,-22等。 * 给定一个32位整数num,判断num是否是回文数。 * * 【难度】 * 简单 * * 【解答】 * 本题的实现方法当然有很多种,本文介绍一种仅用一个整型变量就可以实现的方法,步骤如下: * 1.假设判断的数字为非负数n,先生成变量help,开始时help=1。 * 2.用help不停地乘以10,直到变得与num的位数一样。例如:num等于123321时,help就是100000。num如果是131,help就是 * 100,总之,让help与num的位数一样。 * 3.那么num/help的结果就是最高位的数字,num%10就是最低位的数字,比较这两个数字,不相同则直接返回false。相同则令 * num=(num%help)/10,即num变成除去最高位和最低位两个数字之后的值。令help/=100,即让help变得继续和新的num位数一样。 * 4.如果num==0,表示所有的数字都已经对应判断完,返回true,否则重复步骤3。 * 上述方法就是让num每次剥掉最左和最右两个数,然后逐渐完成所有对应的判断。需要注意的是,如上方法只适用于非负数的判断,如 * 果n为负数,则先把n变成其绝对值,然后用上面的方法进行判断。同时还需注意,32位整数中的最小值为-2147483648,它是转不成 * 相应的绝对值的,可这个数也很明显不是回文数。所以,如果n为-2147483648,直接返回false。具体过程请参看如下代码中的 * isPalindromeNumber方法。 * * @author Created by LiveEveryDay */ public class IsPalindromeNumber { public static boolean isPalindromeNumber(int n) { if (n == Integer.MIN_VALUE) { return false; } n = Math.abs(n); int help = 1; while (n / help >= 10) { help *= 10; } while (n != 0) { if (n / help != n % 10) { return false; } n = (n % help) / 10; help /= 100; } return true; } public static void main(String[] args) { int n = 123454321; System.out.printf("Is palindrome number: %s", isPalindromeNumber(n)); } } // ------ Output ------ /* Is palindrome number: true */