Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package RegularExpressions;
- import java.util.*;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- import java.util.stream.Collectors;
- public class Race {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- List<String> names = Arrays.stream(scanner.nextLine().split(", ")).collect(Collectors.toList());
- Map<String, Integer> racers = new LinkedHashMap<>();
- String nameRegex = "[^A-Za-z]+";
- String distanceRegex = "[^\\d]+";
- String input = scanner.nextLine();
- while (!input.contains("end of race")) {
- Pattern pattern = Pattern.compile(nameRegex);
- Matcher matcher = pattern.matcher(input);
- String name = matcher.replaceAll("");
- if (names.contains(name)) {
- pattern = Pattern.compile(distanceRegex);
- matcher = pattern.matcher(input);
- String distance = matcher.replaceAll("");
- int distanceSum = 0;
- for (int i = 0; i < distance.length(); i++) {
- distanceSum += distance.charAt(i) - 48;
- }
- racers.putIfAbsent(name, 0);
- int temp = racers.get(name);
- racers.put(name, temp + distanceSum);
- }
- input = scanner.nextLine();
- }
- List<String> result = new ArrayList<>();
- racers.entrySet().stream().sorted((a, b) -> b.getValue() - a.getValue())
- .limit(3)
- .forEach(entry -> result.add(entry.getKey()));
- for (int i = 0; i < 3; i++) {
- switch (i) {
- case 0:
- System.out.printf("1st place: %s%n", result.get(i));
- break;
- case 1:
- System.out.printf("2nd place: %s%n", result.get(i));
- break;
- case 2:
- System.out.printf("3rd place: %s%n", result.get(i));
- break;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement