蓝桥杯——山(JAVA)

题目:

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

这天小明正在学数数。

他突然发现有些止整数的形状像一挫 “山”, 比如 123565321 ,145541, 它 们左右对称 (回文) 且数位上的数字先单调不减, 后单调不增。

小朋数了衣久也没有数完, 他惒让你告诉他在区间[2022,2022222022] 中有 多少个数的形状像一座 “山”。

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 512M

代码: 

public class shan {
    public static void main(String[] args) {
        int sum=0;
        for (int i=2022;i<=2022222022;i++){
            String s=i+"";                 //将数字转化为字符串也可以用Integer.toString(i)
            if (huiwen(s)&&dizeng(s)) {
                sum++;                     //存储符合要求的回文数字的数目
            }
        }
        System.out.println(sum);

    }
    public static boolean huiwen(String s){            //判断是否是回文
       StringBuilder stringBuilder=new StringBuilder(s);
       stringBuilder.reverse();                          //将字符串进行反转
       return s.equals(stringBuilder.toString());    //反转后是以字符数组的形式进行存储的,所以要转成字符串。
    }
    public static boolean dizeng(String s){    //判断是否符合先单调不减, 后单调不增。由于是回文数所以判断一半即可。
        int a=s.length();
        for (int i=0;i<a-a/2;i++){
            if (i>0&&s.charAt(i-1)>s.charAt(i)){
                return false;
            }
        }
        return true;
    }

}

思路:暴力解法遍历每一个数,先判断是否是回文数再判断是否符合先单调不减, 后单调不增。

判断回文的时候用到了StringBuilder中的reverse方法将字符串进行反转。

由于是暴力解法所以代码运行时间较长(我运行了一分半时间左右),但本题是填空题,作答时直接输出答案即可。

答案是:3138

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值