首先,不知道什么是回文的,请看我的另一篇文章,回文http://blog.csdn.net/u010042858/article/details/71156352
接下来给大家讲讲回文数,也就是判断一个数是不是回文,我们之前说的
回文都是字符串,是数字又该怎么处理,我们这里只是判断整数是不
是回文,如果是负数,那么前面有符号存在,结果还是判断后面的数字,
所以负数暂时不考虑,思路一样,我们只是判断一个自然数就行,可以借
鉴来判断其他类型的。
在解决是否回文的问题之前,我们先解决一个问题,如何将整型反转?
结果为:
请输入数字: 12345 solution1 反转后为:54321 solution2 反转后为:54321
在取反的基础上,判断是否回文数就很简单了。
package com.zl; import java.util.Scanner; /** * 判断是否回文数算法 * * @author zl * @time 2017.05.04 */ public class PalindromeNumber { private static boolean answer; public static void main(String[] args) { System.out.println("请输入数字:"); Scanner sc = new Scanner(System.in); int num = sc.nextInt(); answer = isPalindrome(num); System.out.println("是否为回文:" + answer); } private static boolean isPalindrome(int num) { if (num < 0 || (num != 0 && num % 10 == 0)) { //负数因为符号的原因,严格来说不算回文,所以排除,如果最后一位是0,回文要0开头,就不是数,故返回false return false; } int sum = 0; while (num > sum) { //回文只需要取一半就可以判断 sum = sum * 10 + num % 10; //数的取反 num = num / 10; } return (num == sum) || (num == sum / 10); //例如,输入1234321,则num=123,sum=1234,结果为true //或者123321,num=123,sum=123,故使用(num == sum) || (num == sum / 10)判断 } }结果如下:
请输入数字: 1234321 是否为回文:true
请输入数字: 123321 是否为回文:true
请输入数字: 12345 是否为回文:false
每天一个算法,提高自己