Untitled
unknown
plain_text
2 years ago
2.5 kB
10
Indexable
package RegularExpressions;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class RaceExe02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
ArrayList<String> list = Arrays.stream(input.split(", "))
.collect(Collectors
.toCollection(ArrayList::new));
LinkedHashMap<String, Integer> map = new LinkedHashMap<>();
for (String s : list) {
map.put(s, 0);
}
StringBuilder name = new StringBuilder("");
Pattern regexOne = Pattern.compile("[A-Za-z]");
Pattern regexTwo = Pattern.compile("[0-9]");
while (true) {
String inputLine = sc.nextLine();
if (inputLine.equals("end of race")) break;
Matcher matcherOne = regexOne.matcher(inputLine);
Matcher matcherTwo = regexTwo.matcher(inputLine);
int sum = 0;
while (matcherOne.find()) {
name.append(matcherOne.group());
}
while (matcherTwo.find()) {
String numAsString = matcherTwo.group();
int numAsInt = Integer.parseInt(numAsString);
sum += numAsInt;
}
String participants = String.valueOf(name);
if (map.containsKey(participants)) {
int distance = map.get(participants) + sum;
map.put(participants, distance);
}
name.setLength(0);
}
ArrayList<String> res = new ArrayList<>();
map.entrySet().stream()
.sorted(Map.Entry
.<String, Integer>comparingByValue()
.reversed()).limit(3)
.forEach(e -> res.add(e.getKey()));
if (res.size() >= 3) {
System.out.printf("1st place: %s\n", res.get(0));
System.out.printf("2nd place: %s\n", res.get(1));
System.out.printf("3rd place: %s\n", res.get(2));
} else if (res.size() == 2) {
System.out.printf("1st place: %s\n", res.get(0));
System.out.printf("2nd place: %s\n", res.get(1));
} else if (res.size() == 1) {
System.out.printf("1st place: %s\n", res.get(0));
}
}
}
Editor is loading...