当前位置:   article > 正文

华为机试JAVA 免单统计_华为商城举办了一个促销活动,某一秒内最早的订单(可能多个)可以获取免单。 现给定

华为商城举办了一个促销活动,某一秒内最早的订单(可能多个)可以获取免单。 现给定

免单统计 
题目描述 
某商城举办了一个促销活动,如果某顾客是某一秒内早时刻下单的顾客(可能是多个人),则可以 获取免单。请你编程计算有多少顾客可以获取免单。
解答要求 时间限制: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 

输入样例2
2019-01-01 08:59:00.123 
2019-01-01 08:59:00.123
2018-12-28 10:08:00.999 
输出样例2 
3
 

  1. import java.text.ParseException;
  2. import java.text.SimpleDateFormat;
  3. import java.util.*;
  4. /**
  5. * 输入格式:yyyy-MM-dd HH:mm:ss.fff
  6. * 2019-01-01 08:59:00.123
  7. * 2019-01-01 08:59:00.123
  8. * 2018-12-28 10:08:00.999
  9. *
  10. * 输出:3
  11. *
  12. * 输入格式:yyyy-MM-dd HH:mm:ss.fff
  13. * 2019-01-01 08:59:00.123
  14. * 2019-01-01 08:59:00.123
  15. *
  16. * 输出:2
  17. */
  18. public class MainClass {
  19. private static Integer n = 50000;
  20. public static void main(String[] args) {
  21. Scanner in = new Scanner(System.in);
  22. List<String> topDates = new ArrayList<>();
  23. int i = 0;
  24. while (in.hasNextLine()){
  25. String orderDate = in.nextLine();
  26. if(validateDate(orderDate)){
  27. topDates.add(orderDate);
  28. }
  29. i++;
  30. if(i>=n)break;
  31. }
  32. Integer topUserNum = doGetTopUserNum(topDates);
  33. System.out.println(topUserNum);
  34. in.close();
  35. }
  36. public static Integer doGetTopUserNum(List<String> topDates){
  37. Integer topUser = 0;
  38. Map<String,String> map = new HashMap<>();
  39. if(topDates !=null &&topDates.size()!=0){
  40. for (String topDate:
  41. topDates) {
  42. String[] dateAndSec = topDate.split("\\.");
  43. String pre = dateAndSec[0];
  44. String suf = dateAndSec[1];
  45. putMinValueToMap(pre,suf,map);
  46. }
  47. for (Map.Entry<String,String> entry:
  48. map.entrySet()){
  49. StringBuffer stringBuffer = new StringBuffer();
  50. stringBuffer.append(entry.getKey()).append(".").append(entry.getValue());
  51. for (int i = 0; i < topDates.size(); i++) {
  52. if(stringBuffer.toString().equals(topDates.get(i))){
  53. topUser++;
  54. }
  55. }
  56. }
  57. }
  58. return topUser;
  59. }
  60. public static boolean validateDate(String date){
  61. Boolean validate = true ;
  62. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
  63. try {
  64. simpleDateFormat.parse(date);
  65. } catch (ParseException e) {
  66. validate = false;
  67. }
  68. return validate;
  69. }
  70. /**
  71. * 用map放取最小数据
  72. * @param datePreFix
  73. * @param datesufFix
  74. * @param map
  75. */
  76. public static void putMinValueToMap(String datePreFix,String datesufFix,Map<String,String> map){
  77. Integer value = map.get(datePreFix)==null?null:Integer.valueOf(map.get(datePreFix));
  78. if(value==null){
  79. map.put(datePreFix,datesufFix);
  80. }else if(value.intValue() > Integer.valueOf(datesufFix).intValue()){
  81. map.put(datePreFix,datesufFix);
  82. }
  83. }
  84. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/955872
推荐阅读
相关标签
  

闽ICP备14008679号