mstoyanova

Untitled

Jun 30th, 2021
542
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.42 KB | None | 0 0
  1. package com.telerikacademy.oop;
  2.  
  3. import java.util.*;
  4. import java.util.stream.Collectors;
  5.  
  6. public class Cypher {
  7.     public static void main(String[] args) {
  8.         Scanner scanner = new Scanner(System.in);
  9.         String numInput = scanner.nextLine();
  10.         String input = scanner.nextLine();
  11.         String[] letters = input.replaceAll("[^A-Z]", " ").split("");
  12.         String[] numbers = input.replaceAll("[^0-9]", " ").split("");
  13.         String code = numInput;
  14.  
  15.         Map<String, String> treeMap = new HashMap<>();
  16.         Map<String,String> counter = new TreeMap<>();
  17. //        int[] counter = {0};
  18.         String letter = "";
  19.         String num = "";
  20.  
  21.         // 1122
  22.         // A-1
  23.         // B-12
  24.         // C-11
  25.         // D-2
  26.  
  27.         for (int i = 1; i < input.length(); i++) {
  28.             if (!letters[i - 1].equals(" ")) {
  29.                 String current = letters[i - 1];
  30.                 letter = current;
  31.                 int temp = i;
  32.                 StringBuilder number = new StringBuilder();
  33.                 num = numbers[temp];
  34.                 while (!numbers[temp].equals(" ") && temp != input.length() - 1) {
  35.                     number.append(numbers[temp]);
  36.                     temp++;
  37.                 }
  38.                 treeMap.put(current, number.toString());
  39.             }
  40.         }
  41.  
  42.         treeMap.replace(letter, num);
  43.  
  44.  
  45.         findVariations(numInput, "", "", treeMap, counter,code);
  46.         System.out.println(counter.size());
  47.         counter.keySet().stream().distinct().forEach(System.out::println);
  48.  
  49.  
  50. //       for (String values : counter.keySet()) {
  51. //            System.out.println(values);
  52. //        }
  53.     }
  54.  
  55.  
  56.     private static void findVariations(String numInput, String prefix, String digits, Map<String, String> treeMap, Map<String,String> counter,String code) {
  57.         if (digits.equals(code)) {
  58. //                System.out.println(prefix);
  59.             if (!counter.containsKey(prefix)) {
  60.                 counter.put(prefix, digits);
  61.             }
  62.             return;
  63.         }
  64.  
  65.         for (Map.Entry<String, String> values : treeMap.entrySet()) {
  66.             if (numInput.contains(values.getValue())) {
  67.                 String outPut = prefix + values.getKey();
  68.                 String newDigits = digits + values.getValue();
  69.  
  70.  
  71.                 findVariations(numInput.substring(1), outPut, newDigits, treeMap, counter,code);
  72.             }
  73.         }
  74.     }
  75.  
  76.  
  77. }
  78.  
Advertisement
Add Comment
Please, Sign In to add comment