Advertisement
Guest User

Untitled

a guest
Mar 24th, 2020
940
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.95 KB | None | 0 0
  1. package SoftUniFund.RegEx.More;
  2.  
  3. import java.util.LinkedHashMap;
  4. import java.util.Scanner;
  5. import java.util.regex.Matcher;
  6. import java.util.regex.Pattern;
  7.  
  8. public class test {
  9.     public static void main(String[] args) {
  10.         Scanner scanner = new Scanner(System.in);
  11.  
  12.         String[] input = scanner.nextLine().split("\\|");
  13.         String firstPart = input[0];
  14.         String secondPart = input[1];
  15.         String thirdPart = input[2];
  16.         LinkedHashMap<Character, Integer> letters = new LinkedHashMap<>();
  17.         //малко съм ти преправил патърна, номисля, че и твоя вървеше правилно
  18.         Pattern patternText = Pattern.compile("([#$%*&])([A-Z]+)\\1");
  19.         Matcher matcherText = patternText.matcher(firstPart);
  20.  
  21.         String capitalLetters = "";
  22.         while (matcherText.find()) {
  23.             String current = matcherText.group();
  24.             capitalLetters = current.substring(1, current.length() - 1);
  25.         }
  26.  
  27.  
  28.         //([65-90]{1,2})\:([0-9]{2})
  29.  
  30.         for (int i = 0; i < capitalLetters.length(); i++) {
  31.             char symbol = capitalLetters.charAt(i);
  32.            
  33.             // патърна съм го вкарал в лупа, за да се инициализира на ново всеки път!
  34.             Pattern patternDigits = Pattern.compile("([0-9]{2}):([0-9]{2})");
  35.             Matcher matcherDigits = patternDigits.matcher(secondPart);
  36.  
  37.             while (matcherDigits.find()) {
  38.                 String current = matcherDigits.group();
  39.                 String[] digits = current.split(":");
  40.                 int asciiCode = Integer.parseInt(digits[0]);
  41.                 int length = Integer.parseInt(digits[1]);
  42.                
  43.                 //добавил съм и едно условие , да не презаписва дължината на думата, ако вече сме записали ентри с този ключ
  44.                 // (в противен случай ще ъпдейтне стойноста с последната намерена, а на нас ни трябва първата намерена
  45.                 if (symbol == asciiCode && !letters.containsKey(symbol)) {
  46.                     letters.put(symbol, length + 1);
  47.                     break;
  48.                 }
  49.             }
  50.         }
  51.  
  52.         String[] thirdText = thirdPart.split("\\s+");
  53.         for (int i = 0; i < capitalLetters.length(); i++) {
  54.  
  55.             char firstLetter = capitalLetters.charAt(i);
  56.             int length = letters.get(firstLetter);
  57.  
  58.             for (String word : thirdText) {
  59.  
  60.                 int lengthWord = word.length();
  61.                 String wordFirstChar = word.substring(0, 1);
  62.                 char firstChar = wordFirstChar.charAt(0);
  63.  
  64.                 if (lengthWord == length && firstLetter == firstChar) {
  65.                     System.out.println(word);
  66.                 }
  67.             }
  68.  
  69.         }
  70.     }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement