Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.li;
- import java.util.*;
- /*
- 5. Баланс скобок. Дана конечная последовательность, состоящая из левых и правых скобок различных заданных типов.
- Определить, можно ли добавить в нее цифры и знаки арифметических действий так, чтобы получилось правильное арифметическое выражение.
- Примеры:
- 1 ( NO
- 2 )) NO
- 3 [} NO
- 4 {} YES
- 5 (){}[] YES
- 6 ({[]}{}) YES
- 7 [({}())[] NO
- */
- public class Main {
- public static void main(String[] args) {
- try(Scanner in = new Scanner(System.in)){
- System.out.println("Введите, пожалуйста, последовательность скобок (для выхода \"Exit\"):");
- String s=in.next();
- while(!s.equalsIgnoreCase("Exit")) {
- if (valid(s)) {
- System.out.println(" Yes");
- } else {
- System.out.println(" No");
- }
- s=in.next();
- }
- }
- }
- private static boolean valid(String s) {
- Deque<Integer> sq = new LinkedList<>();
- for (char c : s.toCharArray()) {
- int i = "{[(}])".indexOf(c);
- if (i >= 0) {
- if (i >= 3) {
- if ((sq.size() == 0) || (sq.poll() != i - 3)) {
- return false;
- }
- } else {
- sq.push(i);
- }
- }
- }
- return sq.isEmpty();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement