Java-判断回文数

import java.util.Scanner;

/**
 * 回文数:一种数字,如:12321, 这个数字正读是12321,倒读也是12321,
 * 即:将这个数的数字按相反的顺序重新排列后,所得到的数和原来的数一样。
 * Created by Administrator on 2017/6/23.
 */
public class HuiWenTest {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        String input = in.next();

        if (input.matches("\\d+")) {

            //方法1 使用数组翻转
            ArrayCharArray(input);

            //方法2 使用StringBuffer reverse方法
            StringBufferReverse(input);

            //方法3 使用首尾对应比较
            isPalindrome(input);

            //方法4 数字反转
            checkHWS(input);

            //方法5 字符串倒置一一比较
            getHuiWen(input);

            //方法6 使用截取字符串的方式比较
            getHuiWenShu(input);

            //方法7 字符串首尾对比
            getHuiWen2(input);

        }
    }

    /*---------------------------------------------------------------*/
    private static void getHuiWen2(String input) {
        boolean b = true;
        for (int i = 0; i < input.length() / 2; i++) {
            if (input.charAt(i) != input.charAt(input.length() - i - 1)) {
                b = false;
                break;
            }
        }
        System.out.println("方法7==" + input + (b ? "是" : "不是") + "回文数");
    }

    /*---------------------------------------------------------------*/

    private static void getHuiWenShu(String input) {
        int count = 0;
        for (int i = 0; i < input.length() / 2; i++) {
            if ((input.substring(i, i + 1))
                    .equals(input.substring(input.length() - 1 - i, input.length() - i))) {
                count++;
            }
        }
        if (count == input.length() / 2) {
            System.out.println("方法6===是回文字符串");
        } else {
            System.out.println("方法6===不是回文字符串");
        }
    }

    /*---------------------------------------------------------------*/

    //将字符串倒置后逐一比较
    private static void getHuiWen(String input) {
        StringBuffer sb = new StringBuffer(input);
        sb.reverse();// 将Str中的字符串倒置

        int count = 0;
        for (int i = 0; i < input.length(); i++) {
            if (input.charAt(i) == sb.charAt(i)) {
                count++;
            }
        }
        if (count == input.length()) {

            System.out.println("方法5==此字符串是一个回文字符串");
        } else {
            System.out.println("方法5==此字符串不是一个回文字符串");
        }
    }

    /*---------------------------------------------------------------*/

    //判断一个数是否为回文数
    public static boolean checkHWS(String inputString) {
        int input = Integer.parseInt(inputString);

        int reverse = 0, temp = input;
        while (temp > 0) {
            reverse = reverse * 10 + temp % 10;
            temp = temp / 10;
        }
        if (input == reverse) {
            System.out.println("方法4==" + input + "是回文数!");
            return true;
        }
        System.out.println("方法4==" + input + "不是回文数!");
        return false;
    }

    private static boolean isPalindrome(String input) {
        int begin = 0, end = input.length() - 1;
        char[] chars = input.toCharArray();

        while (begin < end) {
            if (chars[begin] == chars[end]) {
                begin++;
                end--;
            } else {
                System.out.println("方法3 ==" + input + "不是回文数!!!");
                return false;
            }
        }
        System.out.println("方法3 ==" + input + "是回文数!!!");
        return true;
    }

    /*---------------------------------------------------------------*/

    private static boolean ArrayCharArray(String input) {
        char[] nums = input.toCharArray();
        String output = "";
        for (int i = nums.length; i > 0; i--) {
            output += nums[i - 1];
        }

        System.out.println("方法1  ==input==" + input);
        System.out.println("方法1  ==output==" + output);

        if (output.equals(input)) {
            System.out.println("方法1  ==" + input + "是回文数!!!");
            return true;
        }
        System.out.println("方法1  ==" + input + "不是回文数!!!");
        return false;
    }

    /*---------------------------------------------------------------*/

    private static boolean StringBufferReverse(String input) {
        StringBuffer sbInput = new StringBuffer(input);
        StringBuffer sbReverse = sbInput.reverse();
        String output = sbReverse.toString();//转成字符串

        System.out.println("方法2 ==input==" + input);
        System.out.println("方法2 ==output==" + output);

        if (input.equals(output)) {
            System.out.println("方法2 ==" + input + "是回文数!!!");
            return true;
        }
        System.out.println("方法2 ==" + input + "不是回文数!!!");
        return false;
    }


}


参考:

java判断回文字符串的几种方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值