赞
踩
免单统计
题目描述
某商城举办了一个促销活动,如果某顾客是某一秒内早时刻下单的顾客(可能是多个人),则可以 获取免单。请你编程计算有多少顾客可以获取免单。
解答要求 时间限制:3000ms, 内存限制:64MB 输入 输入为n行数据,每一行表示一位顾客的下单时 间。 以(年-月-日 时-分-秒.毫秒)yyyy-MM-dd HH:mm:ss.fff形式给出。
0<n<50000 2000<yyyy<2020 0<MM<=12 0<dd<=28 0<=HH<=23 0<=mm<=59 0<=ss<=59 0<=fff<=999 所有输 入保证合法。
输出 输出一个整数,表示有多少顾客可以获取免单。
样例:
输入样例1
2019-01-01 00:00:00.001
2019-01-01 00:00:00.002
2019-01-01 00:00:00.003
输出样例1
1
输入样例2
2019-01-01 08:59:00.123
2019-01-01 08:59:00.123
2018-12-28 10:08:00.999
输出样例2
3
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.*;
-
- /**
- * 输入格式:yyyy-MM-dd HH:mm:ss.fff
- * 2019-01-01 08:59:00.123
- * 2019-01-01 08:59:00.123
- * 2018-12-28 10:08:00.999
- *
- * 输出:3
- *
- * 输入格式:yyyy-MM-dd HH:mm:ss.fff
- * 2019-01-01 08:59:00.123
- * 2019-01-01 08:59:00.123
- *
- * 输出:2
- */
- public class MainClass {
- private static Integer n = 50000;
-
- public static void main(String[] args) {
- Scanner in = new Scanner(System.in);
- List<String> topDates = new ArrayList<>();
- int i = 0;
- while (in.hasNextLine()){
- String orderDate = in.nextLine();
- if(validateDate(orderDate)){
- topDates.add(orderDate);
- }
- i++;
- if(i>=n)break;
- }
- Integer topUserNum = doGetTopUserNum(topDates);
- System.out.println(topUserNum);
- in.close();
- }
-
- public static Integer doGetTopUserNum(List<String> topDates){
- Integer topUser = 0;
- Map<String,String> map = new HashMap<>();
- if(topDates !=null &&topDates.size()!=0){
- for (String topDate:
- topDates) {
- String[] dateAndSec = topDate.split("\\.");
- String pre = dateAndSec[0];
- String suf = dateAndSec[1];
- putMinValueToMap(pre,suf,map);
- }
-
- for (Map.Entry<String,String> entry:
- map.entrySet()){
- StringBuffer stringBuffer = new StringBuffer();
- stringBuffer.append(entry.getKey()).append(".").append(entry.getValue());
-
- for (int i = 0; i < topDates.size(); i++) {
- if(stringBuffer.toString().equals(topDates.get(i))){
- topUser++;
- }
- }
- }
-
- }
- return topUser;
- }
-
- public static boolean validateDate(String date){
- Boolean validate = true ;
- SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
- try {
- simpleDateFormat.parse(date);
- } catch (ParseException e) {
- validate = false;
- }
- return validate;
-
- }
-
- /**
- * 用map放取最小数据
- * @param datePreFix
- * @param datesufFix
- * @param map
- */
- public static void putMinValueToMap(String datePreFix,String datesufFix,Map<String,String> map){
- Integer value = map.get(datePreFix)==null?null:Integer.valueOf(map.get(datePreFix));
- if(value==null){
- map.put(datePreFix,datesufFix);
- }else if(value.intValue() > Integer.valueOf(datesufFix).intValue()){
- map.put(datePreFix,datesufFix);
- }
- }
- }
-

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。