题解 | #记票统计#

记票统计

http://www.nowcoder.com/practice/3350d379a5d44054b219de7af6708894

  • 注意多组用例输入时,使用while (in.hasNextInt())判断结束
  • 直接读取nextLine()的时候,会导致回车后读取到的为空白。需要循环使用next()

import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * class com.sloera.nowcoder
 * user sloera
 * date 2022/2/28
 */
public class Main {
  public static void main(String[] args) {
    final Scanner in = new Scanner(System.in);
    while (in.hasNextInt()) {
      handle(in);
    }
  }

  private static void handle(Scanner in) {
    int candidate = 0;
    if (in.hasNextInt()) {
      candidate = in.nextInt();
    }
    String[] names = new String[candidate];
    for (int i = 0; i < candidate; i++) {
      names[i] = in.next();
    }
    final HashSet<String> nameSet = new HashSet<>(Arrays.asList(names));
    final HashMap<String, Integer> nameCount = new HashMap<>();
    AtomicInteger invalid = new AtomicInteger();
    int voteNum = 0;
    if (in.hasNextInt()) {
      voteNum = in.nextInt();
    }
    for (int i = 0; i < voteNum; i++) {
      String x = in.next();
      if (nameSet.contains(x)) {
        nameCount.put(x, Optional.ofNullable(nameCount.get(x)).orElse(0) + 1);
      } else {
        invalid.getAndIncrement();
      }
    }
    for (int i = 0; i < names.length; i++) {
      System.out.println(names[i] + " : " + Optional.ofNullable(nameCount.get(names[i])).orElse(0));
    }
    System.out.println("Invalid : " + invalid);
  }
}
全部评论

相关推荐

真烦好烦真烦:牛友太有实力了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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