Advertisement
Georgi_Benchev

Untitled

Nov 28th, 2024
102
1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.91 KB | None | 1 0
  1. package LinearCodingTasks_Stack_Queue;
  2.  
  3. import java.util.ArrayDeque;
  4. import java.util.Scanner;
  5.  
  6. public class Task3_HDNL_Toy {
  7.     public static void main(String[] args) {
  8.         Scanner scanner = new Scanner(System.in);
  9.  
  10.         int size = Integer.parseInt(scanner.nextLine());
  11.  
  12.         ArrayDeque<String> output = new ArrayDeque<>();
  13.         ArrayDeque<String> stack = new ArrayDeque<>();
  14.  
  15.  
  16.         for (int i = 0; i < size; i++) {
  17.             String local = scanner.nextLine();
  18.  
  19.             if (stack.isEmpty()) {
  20.                 StringBuilder sb = new StringBuilder();
  21.                 sb.append("<");
  22.                 sb.append(local);
  23.                 sb.append(">");
  24.                
  25.                 stack.push(local);
  26.                 output.offer(String.valueOf(sb));
  27.             } else {
  28.                 int lastValueInStack = Integer.parseInt(stack.peek().substring(1, stack.peek().length()));
  29.                 int localValue = Integer.parseInt(local.substring(1, local.length()));
  30.  
  31.                 if (localValue > lastValueInStack) {
  32.  
  33.                     StringBuilder sb = new StringBuilder();
  34.                     for (int j = 0; j < stack.size(); j++) {
  35.                         sb.append(" ");
  36.                     }
  37.  
  38.                     sb.append("<");
  39.                     sb.append(local);
  40.                     sb.append(">");
  41.                     output.offer(String.valueOf(sb));
  42.                     stack.push(local);
  43.  
  44.                 } else {
  45.                     while (!stack.isEmpty() && Integer.parseInt(stack.peek().substring(1, stack.peek().length())) >= localValue) {
  46.                         StringBuilder sb = new StringBuilder();
  47.                         for (int j = 0; j < stack.size() - 1; j++) {
  48.                             sb.append(" ");
  49.                         }
  50.                         sb.append("</");
  51.                         sb.append(stack.peek());
  52.                         sb.append(">");
  53.                         output.offer(String.valueOf(sb));
  54.  
  55.                         stack.pop();
  56.  
  57.  
  58.                     }
  59.                     StringBuilder sb = new StringBuilder();
  60.                     for (int j = 0; j < stack.size(); j++) {
  61.                         sb.append(" ");
  62.                     }
  63.                     sb.append("<");
  64.                     sb.append(local);
  65.                     sb.append(">");
  66.                     output.offer(String.valueOf(sb));
  67.                     stack.push(local);
  68.  
  69.  
  70.                 }
  71.             }
  72.  
  73.  
  74.         }
  75.  
  76.         while (!stack.isEmpty()) {
  77.             StringBuilder sb = new StringBuilder();
  78.             for (int j = 0; j < stack.size() - 1; j++) {
  79.                 sb.append(" ");
  80.             }
  81.             sb.append("</");
  82.             sb.append(stack.peek());
  83.             sb.append(">");
  84.             output.offer(String.valueOf(sb));
  85.             stack.pop();
  86.         }
  87.  
  88.         output.forEach(System.out::println);
  89.  
  90.     }
  91. }
  92.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement