【蓝桥杯】基础练习--特殊回文数,可供参看思路

先来看题目:
【蓝桥杯】基础练习--特殊回文数,可供参看思路_第1张图片
这道题目有很多优解,因为我想熟悉一下Java的内置方法,所有写得看上去比较累赘,但是思路还是清晰的。

因为题目要求的是回文数,数字之和为n,那么自然而然可以想到用两个方法来判断。
我自己写了两个方法

1.Number:判断是否为回文数,不是则返回1,是则返回该数

2.Sum:在这个方法里调用Number,将是回文数的数的每个数相加,在Main方法里面判断Sum的值是否为输入的值。

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int nextInt = sc.nextInt();
        //遍历最小五位数到最大六位数的值
        for (int i = 10000;i<=999999;i++){
            if (Sum(i) != nextInt){
            //相加的值不等于输入的值,不执行下一步,跳出循环
                continue;
            }
            System.out.println(Number(i));
            }
        }

        //判断是否为回文数,不是返回1
    public static Integer Number(int n){
        String sb = Integer.toString(n);
        String a = "1";
            int left = 0;
            int right = sb.length() - 1;
            while (right > left) {
                if (sb.charAt(left) != sb.charAt(right)) {
                    a = "1";
                    break;
                }
                else {
                    a = sb;
                }
                left++;
                right--;
            }
        return Integer.parseInt(a);
    }

        //各个数字相加
    public static Integer Sum(int n){
        Integer a = Number(n);
        Integer every= 0;
        if (a == 1){
            return 1;
        }else {
            String number = Integer.toString(a);
            for (int k = 0;k<number.length();k++){
                String str = number.substring(k,k+1);
                Integer sum = Integer.parseInt(str);
                every+=sum;
            }
        }
        //返回的是每个数字相加的结果
    return every;
    }

}


最近再学算法,想问问题或者一起学习的小伙伴可以加群:785318982

你可能感兴趣的:(刷题,蓝桥杯,java,算法)