Advertisement
Guest User

Untitled

a guest
Jun 24th, 2019
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.63 KB | None | 0 0
  1. package com.li;
  2. import java.util.*;
  3.  
  4. /*
  5. 5. Баланс скобок. Дана конечная последовательность, состоящая из левых и правых скобок различных заданных типов.
  6. Определить, можно ли добавить в нее цифры и знаки арифметических действий так, чтобы получилось правильное арифметическое выражение.
  7.  
  8. Примеры:
  9. 1 ( NO
  10. 2 )) NO
  11. 3 [} NO
  12. 4 {} YES
  13. 5 (){}[] YES
  14. 6 ({[]}{}) YES
  15. 7 [({}())[] NO
  16. */
  17. public class Main {
  18.  
  19. public static void main(String[] args) {
  20. try(Scanner in = new Scanner(System.in)){
  21. System.out.println("Введите, пожалуйста, последовательность скобок (для выхода \"Exit\"):");
  22. String s=in.next();
  23. while(!s.equalsIgnoreCase("Exit")) {
  24. if (valid(s)) {
  25. System.out.println(" Yes");
  26. } else {
  27. System.out.println(" No");
  28. }
  29. s=in.next();
  30. }
  31. }
  32. }
  33.  
  34. private static boolean valid(String s) {
  35. Deque<Integer> sq = new LinkedList<>();
  36. for (char c : s.toCharArray()) {
  37. int i = "{[(}])".indexOf(c);
  38. if (i >= 0) {
  39. if (i >= 3) {
  40. if ((sq.size() == 0) || (sq.poll() != i - 3)) {
  41. return false;
  42. }
  43. } else {
  44. sq.push(i);
  45. }
  46. }
  47. }
  48. return sq.isEmpty();
  49. }
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement