C++

Дана строка, содержащая только английские буквы (большие и маленькие) и открывающиеся скобки. Сформировать новую строку добавлением справа «зеркальной» строки с закрывающимися скобками. "(abc(def(g" -> "(abc(def(gg)fed)cba)"

nmedvedeva20018 nmedvedeva20018    2   24.05.2020 01:20    50

Ответы
SamaraArtem24 SamaraArtem24  15.10.2020 07:22

Дан во вложении.


C++ Дана строка, содержащая только английские буквы (большие и маленькие) и открывающиеся скобки. Сф
ПОКАЗАТЬ ОТВЕТЫ
НАСТЯ7539 НАСТЯ7539  14.01.2024 18:55
Хорошо, давайте разбираться вместе.

Нам дана строка, содержащая английские буквы и открывающиеся скобки. Нашей целью является создать новую строку, добавив к исходной "зеркальную" строку с закрывающимися скобками.

Чтобы решить эту задачу, мы можем использовать следующий алгоритм:

1. Создадим пустую строку, которую мы будем заполнять постепенно.
2. Проходимся по каждому символу исходной строки.
3. Если символ является открывающейся скобкой, мы просто добавляем его к новой строке.
4. Если символ является буквой, мы также добавляем его к новой строке.
5. Если символ является закрывающейся скобкой, мы должны добавить "зеркальную" строку.
Для этого понадобится еще одна переменная-счетчик, которую мы обнулим.
Затем, начиная с предыдущего символа исходной строки, мы будем идти назад и добавлять каждый символ к новой строке.
При этом вместо закрывающейся скобки ')' мы будем добавлять открывающуюся скобку '('.
Запомним количество добавленных символов в переменную-счетчик.
Наконец, мы добавим закрывающуюся скобку ')' к новой строке.
6. Повторяем шаги 2-5 для каждого символа исходной строки.
7. В конце получим новую строку, которую и будем считать результатом.

Давайте применим этот алгоритм к нашему примеру:

Исходная строка: "(abc(def(g"

1. Создаем пустую строку: newString = ""
2. Рассмотрим первый символ: '(' - это открывающаяся скобка, добавляем ее к новой строке newString = "(".
3. Рассмотрим второй символ: 'a' - это буква, добавляем ее к новой строке newString = "(a".
4. Рассмотрим третий символ: 'b' - это буква, добавляем ее к новой строке newString = "(ab".
5. Рассмотрим четвертый символ: 'c' - это буква, добавляем ее к новой строке newString = "(abc".
6. Рассмотрим пятый символ: '(' - это открывающаяся скобка, добавляем ее к новой строке newString = "(abc(".
7. Рассмотрим шестой символ: 'd' - это буква, добавляем ее к новой строке newString = "(abc(d".
8. Рассмотрим седьмой символ: 'e' - это буква, добавляем ее к новой строке newString = "(abc(de".
9. Рассмотрим восьмой символ: 'f' - это буква, добавляем ее к новой строке newString = "(abc(def".
10. Рассмотрим девятый символ: '(' - это открывающаяся скобка, добавляем ее к новой строке newString = "(abc(def(".
11. Рассмотрим десятый символ: 'g' - это буква, добавляем ее к новой строке newString = "(abc(def(g".
12. Рассмотрим одиннадцатый символ: ')' - это закрывающаяся скобка.
Сейчас мы должны добавить "зеркальную" строку, начиная с предыдущего символа, и добавить закрывающуюся скобку.

Получим от предыдущего символа: 'g', добавляем его к новой строке newString = "(abc(def(g".
Получим от предпредыдущего символа: 'f', добавляем его к новой строке newString = "(abc(def(gf".
Получим от предпредпредыдущего символа: 'e', добавляем его к новой строке newString = "(abc(def(gfe".
Получим от предпредпредпредыдущего символа: 'd', добавляем его к новой строке newString = "(abc(def(gfed".
Получим от предпредпредпредпредыдущего символа: 'c', добавляем его к новой строке newString = "(abc(def(gfedc".
Получим от предпредпредпредпредпредыдущего символа: 'b', добавляем его к новой строке newString = "(abc(def(gfedcb".
Получим от предпредпредпредпредпредпредыдущего символа: 'a', добавляем его к новой строке newString = "(abc(def(ggfedcba".

Наконец, добавляем закрывающуюся скобку: newString = "(abc(def(ggfed)cba".

13. Мы обработали все символы исходной строки, получили новую строку newString = "(abc(def(ggfed)cba".

Таким образом, новая строка, полученная в результате "зеркальной" строки с закрывающимися скобками, будет "(abc(def(ggfed)cba".
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика