Advertisement
N_Damyanov

03. Race

Dec 13th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.08 KB | None | 0 0
  1. package RegularExpressions;
  2.  
  3.         import java.util.*;
  4.         import java.util.regex.Matcher;
  5.         import java.util.regex.Pattern;
  6.         import java.util.stream.Collectors;
  7.  
  8. public class Race {
  9.     public static void main(String[] args) {
  10.         Scanner scanner = new Scanner(System.in);
  11.         List<String> names = Arrays.stream(scanner.nextLine().split(", ")).collect(Collectors.toList());
  12.         Map<String, Integer> racers = new LinkedHashMap<>();
  13.         String nameRegex = "[^A-Za-z]+";
  14.         String distanceRegex = "[^\\d]+";
  15.  
  16.         String input = scanner.nextLine();
  17.  
  18.         while (!input.contains("end of race")) {
  19.             Pattern pattern = Pattern.compile(nameRegex);
  20.             Matcher matcher = pattern.matcher(input);
  21.             String name = matcher.replaceAll("");
  22.             if (names.contains(name)) {
  23.                 pattern = Pattern.compile(distanceRegex);
  24.                 matcher = pattern.matcher(input);
  25.                 String distance = matcher.replaceAll("");
  26.                 int distanceSum = 0;
  27.                 for (int i = 0; i < distance.length(); i++) {
  28.                     distanceSum += distance.charAt(i) - 48;
  29.                 }
  30.                 racers.putIfAbsent(name, 0);
  31.                 int temp = racers.get(name);
  32.                 racers.put(name, temp + distanceSum);
  33.             }
  34.             input = scanner.nextLine();
  35.         }
  36.         List<String> result = new ArrayList<>();
  37.         racers.entrySet().stream().sorted((a, b) -> b.getValue() - a.getValue())
  38.                 .limit(3)
  39.                 .forEach(entry -> result.add(entry.getKey()));
  40.         for (int i = 0; i < 3; i++) {
  41.             switch (i) {
  42.                 case 0:
  43.                     System.out.printf("1st place: %s%n", result.get(i));
  44.                     break;
  45.                 case 1:
  46.                     System.out.printf("2nd place: %s%n", result.get(i));
  47.                     break;
  48.                 case 2:
  49.                     System.out.printf("3rd place: %s%n", result.get(i));
  50.                     break;
  51.             }
  52.         }
  53.     }
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement