Advertisement
Guest User

Post Office

a guest
Mar 22nd, 2020
439
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.25 KB | None | 0 0
  1. import java.util.LinkedHashMap;
  2. import java.util.Scanner;
  3. import java.util.regex.Matcher;
  4. import java.util.regex.Pattern;
  5.  
  6. public class PostOffice {
  7.     public static void main(String[] args) {
  8.         Scanner scanner = new Scanner(System.in);
  9.  
  10.         String[] input = scanner.nextLine().split("\\|");
  11.         String firstPart = input[0];
  12.         String secondPart = input[1];
  13.         String thirdPart = input[2];
  14.         LinkedHashMap<Character, Integer> letters = new LinkedHashMap<>();
  15.  
  16.         Pattern patternText = Pattern.compile("(\\@[A-Z]+\\@)|(\\#[A-Z]+\\#)|(\\$[A-Z]+\\$)|" +
  17.                 "(\\%[A-Z]+\\%)|(\\*[A-Z]+\\*)");
  18.         Matcher matcherText = patternText.matcher(firstPart);
  19.  
  20.         String capitalLetters = "";
  21.         while (matcherText.find()) {
  22.             String current = matcherText.group();
  23.             capitalLetters = current.substring(1, current.length() - 1);
  24.         }
  25.  
  26.         Pattern patternDigits = Pattern.compile("(\\d+)\\:([0-9]{2})");
  27.         Matcher matcherDigits = patternDigits.matcher(secondPart);
  28.  
  29.         //([65-90]{1,2})\:([0-9]{2})
  30.  
  31.         for (int i = 0; i < capitalLetters.length(); i++) {
  32.             char symbol = capitalLetters.charAt(i);
  33.  
  34.             while (matcherDigits.find()) {
  35.                 String current = matcherDigits.group();
  36.                 String[] digits = current.split(":");
  37.                 int asciiCode = Integer.parseInt(digits[0]);
  38.                 int length = Integer.parseInt(digits[1]);
  39.  
  40.                 if (symbol == asciiCode) {
  41.                     letters.put(symbol, length + 1);
  42.                     break;
  43.                 }
  44.             }
  45.         }
  46.  
  47.         String[] thirdText = thirdPart.split("\\s+");
  48.         for (int i = 0; i < capitalLetters.length(); i++) {
  49.  
  50.             char firstLetter = capitalLetters.charAt(i);
  51.             int length = letters.get(firstLetter);
  52.  
  53.             for (String word : thirdText) {
  54.  
  55.                 int lengthWord = word.length();
  56.                 String wordFirstChar = word.substring(0, 1);
  57.                 char firstChar = wordFirstChar.charAt(0);
  58.  
  59.                 if (lengthWord == length && firstLetter == firstChar) {
  60.                     System.out.println(word);
  61.                 }
  62.             }
  63.         }
  64.     }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement