Advertisement
StefanShivarov

Java Fundamentals/RegularExpression/ 2. Race

Nov 25th, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.24 KB | None | 0 0
  1.  
  2. import java.util.Map;
  3. import java.util.Scanner;
  4. import java.util.TreeMap;
  5. import java.util.regex.Matcher;
  6. import java.util.regex.Pattern;
  7.        
  8. public class regex_Race {
  9.  
  10.     public static void main(String[] args) {
  11.  
  12.         Scanner scanner = new Scanner(System.in);
  13.  
  14.         String[] participants = scanner.nextLine().split(", ");
  15.  
  16.         String nameregex = "[A-Za-z]+";
  17.         Pattern namePattern = Pattern.compile(nameregex);
  18.  
  19.         String numbersregex = "\\d";
  20.         Pattern numbersPattern = Pattern.compile(numbersregex);
  21.  
  22.         String input = scanner.nextLine();
  23.  
  24.         Map<String, Integer> competitorsDistances = new TreeMap<>();
  25.  
  26.         while (!input.equals("end of race")) {
  27.  
  28.             Matcher nameMatcher = namePattern.matcher(input);
  29.             Matcher numbersMatcher = numbersPattern.matcher(input);
  30.  
  31.             String name = "";
  32.             int distance = 0;
  33.  
  34.             while (nameMatcher.find()) {
  35.  
  36.                 name = name.concat(nameMatcher.group());
  37.  
  38.             }
  39.  
  40.             while (numbersMatcher.find()) {
  41.  
  42.                 distance += Integer.parseInt(numbersMatcher.group());
  43.             }
  44.  
  45.  
  46.  
  47.             if(isCompeting(name, participants)){
  48.  
  49.                 if(!competitorsDistances.containsKey(name)){
  50.  
  51.                     competitorsDistances.put(name, distance);
  52.                 }else{
  53.  
  54.                     int newValue = competitorsDistances.get(name) + distance;
  55.                     competitorsDistances.remove(name);
  56.                     competitorsDistances.put(name, newValue);
  57.                 }
  58.  
  59.             }
  60.  
  61.  
  62.             input = scanner.nextLine();
  63.         }
  64.  
  65.  
  66.         int first = Integer.MIN_VALUE;
  67.         int second = Integer.MIN_VALUE;
  68.         int third = Integer.MIN_VALUE;
  69.  
  70.         for(Map.Entry<String, Integer> entry : competitorsDistances.entrySet()){
  71.  
  72.             if(entry.getValue()>first){
  73.  
  74.                 third = second;
  75.                 second = first;
  76.                 first = entry.getValue();
  77.  
  78.             }else if(entry.getValue() > second){
  79.  
  80.                 third = second;
  81.                 second = entry.getValue();
  82.             }else if(entry.getValue() > third){
  83.  
  84.                 third = entry.getValue();
  85.             }
  86.         }
  87.  
  88.         String firstPlace = "";
  89.         String secondPlace = "";
  90.         String thirdPlace = "";
  91.  
  92.         for(Map.Entry<String, Integer>entry : competitorsDistances.entrySet()){
  93.  
  94.             if(first==entry.getValue()){
  95.  
  96.                 firstPlace = entry.getKey();
  97.  
  98.             }else if(second==entry.getValue()){
  99.  
  100.                 secondPlace = entry.getKey();
  101.  
  102.             }else if(third==entry.getValue()){
  103.  
  104.                 thirdPlace = entry.getKey();
  105.             }
  106.         }
  107.  
  108.  
  109.         System.out.println("1st place: "+firstPlace);
  110.         System.out.println("2nd place: "+secondPlace);
  111.         System.out.println("3rd place: "+thirdPlace);
  112.  
  113.  
  114.     }
  115.  
  116.  
  117.  
  118.     static boolean isCompeting(String name, String[]participants){
  119.  
  120.         boolean isCompeting = false;
  121.         for(int i = 0; i < participants.length; i++){
  122.  
  123.             if(participants[i].equals(name)){
  124.  
  125.                 isCompeting = true;
  126.                 break;
  127.             }
  128.  
  129.         }
  130.  
  131.         return isCompeting;
  132.     }
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement