Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Map;
- import java.util.Scanner;
- import java.util.TreeMap;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- public class regex_Race {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- String[] participants = scanner.nextLine().split(", ");
- String nameregex = "[A-Za-z]+";
- Pattern namePattern = Pattern.compile(nameregex);
- String numbersregex = "\\d";
- Pattern numbersPattern = Pattern.compile(numbersregex);
- String input = scanner.nextLine();
- Map<String, Integer> competitorsDistances = new TreeMap<>();
- while (!input.equals("end of race")) {
- Matcher nameMatcher = namePattern.matcher(input);
- Matcher numbersMatcher = numbersPattern.matcher(input);
- String name = "";
- int distance = 0;
- while (nameMatcher.find()) {
- name = name.concat(nameMatcher.group());
- }
- while (numbersMatcher.find()) {
- distance += Integer.parseInt(numbersMatcher.group());
- }
- if(isCompeting(name, participants)){
- if(!competitorsDistances.containsKey(name)){
- competitorsDistances.put(name, distance);
- }else{
- int newValue = competitorsDistances.get(name) + distance;
- competitorsDistances.remove(name);
- competitorsDistances.put(name, newValue);
- }
- }
- input = scanner.nextLine();
- }
- int first = Integer.MIN_VALUE;
- int second = Integer.MIN_VALUE;
- int third = Integer.MIN_VALUE;
- for(Map.Entry<String, Integer> entry : competitorsDistances.entrySet()){
- if(entry.getValue()>first){
- third = second;
- second = first;
- first = entry.getValue();
- }else if(entry.getValue() > second){
- third = second;
- second = entry.getValue();
- }else if(entry.getValue() > third){
- third = entry.getValue();
- }
- }
- String firstPlace = "";
- String secondPlace = "";
- String thirdPlace = "";
- for(Map.Entry<String, Integer>entry : competitorsDistances.entrySet()){
- if(first==entry.getValue()){
- firstPlace = entry.getKey();
- }else if(second==entry.getValue()){
- secondPlace = entry.getKey();
- }else if(third==entry.getValue()){
- thirdPlace = entry.getKey();
- }
- }
- System.out.println("1st place: "+firstPlace);
- System.out.println("2nd place: "+secondPlace);
- System.out.println("3rd place: "+thirdPlace);
- }
- static boolean isCompeting(String name, String[]participants){
- boolean isCompeting = false;
- for(int i = 0; i < participants.length; i++){
- if(participants[i].equals(name)){
- isCompeting = true;
- break;
- }
- }
- return isCompeting;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement