veronikaaa86

Worm Ipsum 50

Mar 1st, 2018
444
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.40 KB | None | 0 0
  1. package exams.retakeApril;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.util.Collections;
  7. import java.util.Map;
  8. import java.util.TreeMap;
  9. import java.util.regex.Matcher;
  10. import java.util.regex.Pattern;
  11.  
  12. public class P02_WormIpsum {
  13.     public static void main(String[] args) throws IOException {
  14.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  15.  
  16.         String input = "";
  17.         //String regex = "^([A-Z][^.]*)([.])$";
  18.         String regex = "^([A-Z][^.]*)([.])$";
  19.  
  20.         Pattern pattern = Pattern.compile(regex);
  21.  
  22.         while (true) {
  23.             input = reader.readLine();
  24.             if ("Worm Ipsum".equals(input)) break;
  25.  
  26.             Matcher matcher = pattern.matcher(input);
  27.  
  28.             if (matcher.find()) {
  29.  
  30.                 char repeatLetter = 0;
  31.                 String[] tokens = input.split("\\s+");
  32.                 for (int i = 0; i < tokens.length; i++) {
  33.                     if (tokens[i].endsWith(".")) {
  34.                         tokens[i] = tokens[i].replaceAll("\\.", "");
  35.                     }
  36.                     Map<Character, Integer> map = new TreeMap<>();
  37.                     for (int j = 0; j < tokens[i].length(); j++) {
  38.                         char letter = tokens[i].charAt(j);
  39.                         if (!map.containsKey(letter)) {
  40.                             map.put(letter, 1);
  41.                         } else {
  42.                             map.put(letter, map.get(letter) + 1);
  43.                         }
  44.                     }
  45.  
  46.                     int maxValueInMap = Collections.max(map.values());
  47.                     for (Map.Entry<Character, Integer> entry : map.entrySet()) {
  48.                         if (maxValueInMap > 1) {
  49.                             if (entry.getValue() == maxValueInMap) {
  50.                                 repeatLetter = entry.getKey();
  51.                                 tokens[i] = repeatString(repeatLetter, tokens[i].length());
  52.                             }
  53.                         }
  54.                     }
  55.                 }
  56.                 System.out.printf("%s.%n", String.join(" ", tokens));
  57.             }
  58.         }
  59.     }
  60.     public static String repeatString(char letter, int counter) {
  61.         String result = "";
  62.         for (int i = 0; i < counter; i++) {
  63.             result += letter;
  64.         }
  65.         return result;
  66.     }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment