LeetCode09——回文数

LeetCode09

LeetCode09——回文数_第1张图片
自己写的解,转化为字符串再反转,比较笨。
LeetCode09——回文数_第2张图片

import java.util.Scanner;
public class Result01 {
    public static void main(String[] args) {
        System.out.println("请输入整数,我来帮您判断是否是回文数。");
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        ifNumber(num);
    }
    public static boolean ifNumber(int a){
        //负数不可能是回文数
        if (a<0){
            System.out.println(a+"不是回文数。");
            return false;
        }else if (a==0||a<10){//0,1,2,..个位数都是回文数
            System.out.println(a+"是回文数。");
            return true;
        }else {
            //将int转化为字符串
            String str = Integer.toString(a);
            //使用StringBuffer容器的append()添加方法、reverse()反转方法
            StringBuffer stringBuffer = new StringBuffer();
            stringBuffer.append(str);
            //String.valueOf将StringBuffer转化为String 存入 反转后的字符串 reverseStr 中
            String reverseStr = String.valueOf(stringBuffer.reverse());
            if (str.equals(reverseStr)){
                System.out.println(a+"是回文数。");
                return true;
            }else {
                System.out.println(a+"不是是回文数。");
                return false;
            }
        }
    }
}

官方给的解比较巧妙。
LeetCode09——回文数_第3张图片
LeetCode09——回文数_第4张图片

LeetCode09——回文数_第5张图片

public class Result02 {
    public static void main(String[] args) {
        System.out.println("请输入您要判断的数据:");
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        boolean ifNum = ifNumber(a);
        if (ifNum==true){
            System.out.println(a+"是回文数。");
        }else {
            System.out.println(a+"不是回文数");
        }

    }
    public static boolean ifNumber(int a){
        //负数不可能是回文数;  除了0以外,其余个位为0的数也都不是回文数,因为首位不可能是0。
        if (a<0||(a%10==0&&a!=0)){
            return false;
        }
        //循环建立反转一半的数字
        int revertedNumber = 0;
        while(a > revertedNumber){
            revertedNumber = revertedNumber * 10 +a % 10;
            a /= 10;
        }
        //针对奇数位和偶数位的数字,分别判断是否为回文。
        return a == revertedNumber || a == revertedNumber/10;
    }
}
//算法复杂度——————时间O(log10(N))、空间O(1)

你可能感兴趣的:(LeetCode,java,开发语言,LeetCode,回文数)