蓝桥 13期 java c组 特殊日期

【问题描述】

2022 年 2 月 22 日 22:20 是一个很有意义的时间,年份为 2022,由 3 个 2 和 1 个 0 组

成,如果将月和日写成 4 位,为 0222,也是由 3 个 2 和 1 个 0 组 成,如果将时间中的时和

分写成 4 位,还是由 3 个 2 和 1 个 0 组成。

小蓝对这样的时间很感兴趣,他还找到了其它类似的例子,比如 111 年 10 月 11 日

01:11,2202 年 2 月 22 日 22:02 等等。

请问,总共有多少个时间是这种年份写成 4 位、月日写成 4 位、时间写成 4 位后由 3

个一种数字和 1 个另一种数字组成。注意 1111 年 11 月 11 日 11:11 不算,因为它里面没有

两种数字。

【答案提交】

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

java 复制代码
package a.a;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

public class LanQiao13B {
    static SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm");
    static void fun(int i, int j, List<String> list) {
        list.add(i + "" + i + "" + i + "" + j);
        list.add(i + "" + i + "" + j + "" + i);
        list.add(i + "" + j + "" + i + "" + i);
        list.add(j + "" + i + "" + i + "" + i);
    }

    static void fun1(List<String> list, List<String> resultList) {
        // 因为是由 年 月日 时分 三个组成,所以直接做了3个for循环用来拼接
        for (int m = 0; m < list.size(); m++) {
            for (int n = 0; n < list.size(); n++) {
                for (int p = 0; p < list.size(); p++) {
                    // 这里借用SimpleDateFormat来判断是否是正常时间
                    String date = list.get(m) + list.get(n) + list.get(p);
                    try {
                        sdf.parse(date);
                    } catch (ParseException e) {
                        // 遇到非正常时间直接跨过,
                        continue;
                    }
                    // 正确的时间给添加到list中,用来统计
                    resultList.add(date);

                }
            }
        }
    }

    public static void main(String[] args) {

        List<String> resultList = new ArrayList<>();
        sdf.setLenient(false);
        for (int i = 0; i < 10; i++) {
            for (int j = i + 1; j < 10; j++) {
                List<String> list = new ArrayList<>();
                fun(i, j, list);
                fun1(list, resultList);

                list = new ArrayList<>();
                fun(j, i, list);
                fun1(list, resultList);
            }
        }
        System.out.println(resultList.size());
    }
}
相关推荐
lucky67071 小时前
Windows 上彻底卸载 Node.js
windows·node.js
编程小白20262 小时前
从 C++ 基础到效率翻倍:Qt 开发环境搭建与Windows 神级快捷键指南
开发语言·c++·windows·qt·学习
凯子坚持 c3 小时前
CANN 性能剖析实战:从原始事件到交互式火焰图
windows·microsoft
开开心心就好4 小时前
发票合并打印工具,多页布局设置实时预览
linux·运维·服务器·windows·pdf·harmonyos·1024程序员节
獨枭4 小时前
PyCharm 跑通 SAM 全流程实战
windows
仙剑魔尊重楼5 小时前
音乐制作电子软件FL Studio2025.2.4.5242中文版新功能介绍
windows·音频·录屏·音乐·fl studio
PHP小志5 小时前
Windows 服务器怎么修改密码和用户名?账户被系统锁定如何解锁
windows
专注VB编程开发20年7 小时前
vb.net datatable新增数据时改用数组缓存
java·linux·windows
仙剑魔尊重楼7 小时前
专业音乐制作软件fl Studio 2025.2.4.5242中文版新功能
windows·音乐·fl studio
rjc_lihui8 小时前
Windows 运程共享linux系统的方法
windows