题解 | #简单错误记录#

简单错误记录

http://www.nowcoder.com/practice/2baa6aba39214d6ea91a2e03dff3fbeb

  • 使用一个arraylist存储顺序
  • 使用一个hashmap存储计数
  • 使用正则去除目录和超长文件名
  • 输出时,注意输入不足8个的情况
  • 注意终止输入的处理
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;

/**
 * class com.sloera.nowcoder
 * user sloera
 * date 2022/2/24
 */
public class Main {
  public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    // 注意 hasNext 和 hasNextLine 的区别
    final ArrayList<String> result = new ArrayList<>();
    final HashMap<String, Integer> count = new HashMap<>();
    while (in.hasNextLine()) { // 注意 while 处理多个 case
      final String s = in.nextLine();
      if (!"".equals(s)) {
        handle(result, count,s);
      } else {
        break;
      }
    }
    // 倒序输出8个
    for (int i = Math.max(result.size()-8, 0); i < result.size(); i++) {
      System.out.println(result.get(i) + " " + count.get(result.get(i)));
    }
  }

  private static void handle(ArrayList<String> result, HashMap<String, Integer> count, String s) {
    final String[] split = s.split("\\s+");
    // 替换目录路径 及 前16位
    String name  = split[0].replaceAll(".*\\\\", "").replaceAll("^.*?(.{16})$", "$1") + " " + split[1];
    if (count.containsKey(name)) {
      count.put(name, count.get(name) + 1);
    } else {
      result.add(name);
      count.put(name, 1);
    };
  }

}
全部评论

相关推荐

昨天 13:52
武汉大学 golang
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-26 15:18
点赞 评论 收藏
分享
湫湫湫不会java:1.在校经历全删了2.。这些荣誉其实也没啥用只能说,要的是好的开发者不是好好学生3.项目五六点就行了,一个亮点一俩行,xxx技术解决,xxx问题带来xxx提升。第一页学历不行,然后啥有价值的信息也没有,到第二页看到项目了,第一个项目九点,第二个项目像凑数的俩点。总体给人又臭又长,一起加油吧兄弟
点赞 评论 收藏
分享
真烦好烦真烦:豆包润色了自己没看看吗,再说了,都说豆包是愚蠢且勤快的大学生,ds才是聪明的研究生,怎么敢让豆包写论文的
你们的毕业论文什么进度了
点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务