2017 蓝桥杯JavaB组省赛 日期问题
来源:互联网 发布:windows 高精度sleep 编辑:程序博客网 时间:2024/04/26 05:22
日期问题
小明正在整理一批历史文献。这些历史文献中出现了很多日期。
小明知道这些日期都在1960年1月1日至2059年12月31日。
令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。
更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在很多可能的日期与其对应。
比如02/03/04,可能是2002年03月04日、2004年02月03日或2004年03月02日。
给出一个文献上的日期,你能帮助小明判断有哪些可能的日期对其对应吗?
输入
一个日期,格式是”AA/BB/CC”。 (0 <= A, B, C <= 9)
输出
输出若干个不相同的日期,每个日期一行,格式是”yyyy-MM-dd”。多个日期按从早到晚排列。
样例输入
02/03/04
样例输出
2002-03-04
2004-02-03
2004-03-02
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。
解题注意
注意最后的判重、排序、数据是否合理的问题
代码
import java.util.ArrayList;import java.util.Scanner;public class Main { static ArrayList<Data> data = new ArrayList<>(); public static void main(String[] args) { Scanner s = new Scanner(System.in); String[] tmp = s.nextLine().trim().split("/"); // 添加数据 data.add(new Data(Integer.parseInt(tmp[0]), Integer.parseInt(tmp[1]), Integer.parseInt(tmp[2]))); data.add(new Data(Integer.parseInt(tmp[2]), Integer.parseInt(tmp[0]), Integer.parseInt(tmp[1]))); data.add(new Data(Integer.parseInt(tmp[2]), Integer.parseInt(tmp[1]), Integer.parseInt(tmp[0]))); // 去重 wipeRepeat(); // 合理性判断 check(); // 排序 sort(); // 输出 for (Data d : data) { System.out.println(d.toString()); } } static void sort() { for (int i = 0; i < data.size() - 1; i++) for (int j = i + 1; j < data.size(); j++) { int yearI = data.get(i).year; int yearJ = data.get(j).year; int monthI = data.get(i).month; int monthJ = data.get(j).month; int dayI = data.get(i).day; int dayJ = data.get(j).day; if (yearI > yearJ) change(i, j); else if (yearI == yearJ) if (monthI > monthJ) change(i, j); else if (monthI == monthJ) if (dayI > dayJ) change(i, j); } } static void change(int i, int j) { Data tmp = data.get(i); data.set(i, data.get(j)); data.set(j, tmp); } static void wipeRepeat() { for (int i = 0; i < data.size(); i++) { for (int j = i + 1; j < data.size(); j++) if (data.get(i).year == data.get(j).year && data.get(i).month == data.get(j).month && data.get(i).day == data.get(j).day) { data.remove(j); wipeRepeat(); return; } } } static void check() { for (int i = 0; i < data.size(); i++) { int year = data.get(i).year; int month = data.get(i).month; int day = data.get(i).day; if (month < 1 || month > 12) { data.remove(i); check(); return; } if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { if (month == 2) if (day < 1 || day > 28) { data.remove(i); check(); return; } } else { if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { if (day < 1 || day > 31) { data.remove(i); check(); return; } } else if (month == 2) { if (day < 1 || day > 29) { data.remove(i); check(); return; } } else { if (day < 1 || day > 30) { data.remove(i); check(); return; } } } } }}class Data { int year; int month; int day; public Data(int year, int month, int day) { if (year >= 60) this.year = 1900 + year; else this.year = 2000 + year; this.month = month; this.day = day; } @Override public String toString() { if (month < 10 && day < 10) return year + "-0" + month + "-0" + day; else if (month < 10 && day >= 10) return year + "-0" + month + "-" + day; else if (month >= 10 && day < 10) return year + "-" + month + "-0" + day; else return year + "-" + month + "-" + day; }}
0 0
- 2017 蓝桥杯JavaB组省赛 日期问题
- 2017 蓝桥杯JavaB组省赛 购物单
- 2017 蓝桥杯JavaB组省赛 分巧克力
- 2014 蓝桥杯JavaB组省赛 分糖果
- 2014 蓝桥杯JavaB组省赛 李白打酒
- 2017蓝桥杯JavaB组,所有题
- 蓝桥杯 2014年javaB组 编程题 分糖果问题
- 蓝桥杯javaB组试题之Fibonacci数列求余问题
- 第八届蓝桥杯JavaB组省赛
- 2016第七届蓝桥杯JavaB组省赛
- 2015第六届蓝桥杯JavaB组省赛
- 明天参加蓝桥杯javaB组
- 错误票据(蓝桥杯JavaB组预赛)
- 黄金分割数(蓝桥杯JavaB组预赛)
- 带分数(蓝桥杯JavaB组预赛)
- 蓝桥杯-第七届省赛javaB组-凑算式
- 蓝桥杯-第七届省赛javaB组- 四平方和
- 蓝桥杯比赛javaB组练习《饮料换购》
- Hibernate学习笔记3--映射关联关系
- IT404过关游戏WP
- The method getContextPath() from the type HttpServletRequest refers to the missing type
- Hexo NexT 主题下 blockquote 文本内容超出不自动换行解决方式
- 背包九讲
- 2017 蓝桥杯JavaB组省赛 日期问题
- LeetCode 111. Minimum Depth of Binary Tree
- Leetcode-549. Binary Tree Longest Consecutive Sequence II
- Vue2.0进阶组件篇4 突如其来(时间倒计时组件)
- 静态二维数组和动态二维数组(C语言)
- 170408 汇编-段内转移指令
- Unity3D游戏记录回放插件EZReplayManager(三)
- Windows 10中的PowerShell内置运行软件版本
- 谈谈我对云计算的认识之基本概念(二)