@atambalasi

Определить начло и конец скобок из String и расставить правильном порядке?

Дан строка вида
String fileStr= "['2', '3', ['b','a', ['A', 'B'], 'S', ['R'] ], 'G', ['Z']]";

Надо определить и закрыть скобки правильно.
Для определение использоваль StringBuilder и ArrrayList
StringBuilder str= new StringBuilder(fileStr);
   ArrayList<Integer> tokenIndexStart = new ArrayList<>();
   ArrayList<Integer> tokenIndexEnd = new ArrayList<>();


        for (int i = 0; i < str.length() - 1; i++) {

            if (str.charAt(i) == '[') {

                tokenIndexStart.add(i);
            } else if (str.charAt(i) == ']') {
                tokenIndexEnd.add(i);
            }
        }

Теперь есть два списка первый содерижть индексы где лежать начало скобки, а во втором списке лежить индексы закрывающися скобки. Надо расставить так чтобы правильно они закрывались. Мне надо получить
1)['2', '3', ['b','a', ['A', 'B'], 'S', ['R'] ], 'G', ['Z']]
2)['b','a', ['A', 'B'], 'S', ['R'] ]
3)['A', 'B']
4) ['R']
5) ['Z']
  • Вопрос задан
  • 136 просмотров
Пригласить эксперта
Ответы на вопрос 1
wataru
@wataru Куратор тега Алгоритмы
Разработчик на С++, экс-олимпиадник.
Я так понял, у вас в строке скобки расставлены правильно, и вам надо поставить соответствие межу скобками.

Используйте стек. Пройдитесь по строке циклом. При встрече открывающей скобки кладите ее позицию в стек. При встрече закрывающей скобки доставайте позицию соответствующей ей открывающей из стека. Скобки расставлены неправильно, если после обработки всей строки в стеке что-то осталось или вы встретили закрывающую скобку при пустом стеке.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
11 мая 2024, в 00:19
1000 руб./за проект
10 мая 2024, в 23:51
30000 руб./за проект
10 мая 2024, в 23:33
2500 руб./за проект