Дмитрий считает, что когда текст пишут в скобках (как вот тут, например), его читать не нужно. Вот и надумал он существенно укоротить время чтения, написав программу, которая будет удалять все, что расположено внутри скобок.
Помогите ленивому Диме разработать алгоритм, который будет удалять все, что внутри скобок и сами эти скобки, возвращая очищенный текст (скобки могут быть вложенными).
Программа на входе принимает строки со скобками, а выводит строки без скобок и их содержимого.
*При разработке алгоритма решения нужно учесть, что самая последняя открывающая скобка должна обязательно иметь после себя закрывающую. Таким образом, алгоритм будет работать до тех пор, пока в тексте есть оба вида скобок.
Тесты
1. Падал(лишнее (лишнее) лишнее) прошлогодний снег (лишнее)
2. (лишнее(лишнее))Падал прошлогодний (лишнее(лишнее(лишнее)))снег
Результат выполнения
1. Падал прошлогодний снег
2. Падал прошлогодний снег
Python
Пайтон мучаюсь уже долго потому что уже 2 день на пайтоне но фига неправилно пишу помогите пж
import re
s, p = input(), ''
while s != p: s, p = re.sub(r'\([^()]*\)', '', s), s
print(s)
Так а зачем изучать, если не понимаешь? Тем более пайтон
Владимир Хальзов
надо
Вариант чисто на Питоне
#!/usr/bin/python3
def remove_round_bracket( s ):
result = ""
start_idx = 0
# Если флаг False то мы вне скобок, а если True то внутри
rb_flag = False
# Счетчик скобок
rb_count = 0
# Индекс в строке
idx = 0
while idx < len(s):
if rb_flag == False:
# Если найдена открывающая скобка то:
if s[idx] == '(':
# Увеличим счетчик скобок на 1
rb_count += 1
# Скопируем часть строки от начала и до скобки
result = result + s[start_idx:idx]
# Изменим флаг нахождения внутри скобок
rb_flag = True
# Мы уже внутри скобок
else:
# Если найдена открывающая скобка то:
if s[idx] == '(':
# Увеличим счетчик скобок на 1
rb_count += 1
# Если найдена закрывающая скобка то:
elif s[idx] == ')':
# Уменьшим счетчик скобок на 1
rb_count -= 1
# Это была последняя закрывающая скобка
if rb_count == 0:
rb_flag = False
# Скорректируем новую стартовую позицию
start_idx = idx + 1
# Увеличим индекс
idx += 1;
# Скопируем часть строки от начала и до скобки
result = result + s[start_idx:idx]
return result
# Удаляет из строки текст в круглых скобках. Скобки могут быть вложенными.
data = [ "Строка (со скобками)",
"Падал(лишнее (лишнее) лишнее) прошлогодний снег (лишнее)",
"(лишнее(лишнее))Падал прошлогодний (лишнее(лишнее(лишнее)))снег" ]
for line in data:
print( "Строка до: '"+line+"'" )
print( "Строка после: '"+remove_round_bracket(line)+"'")
Пример работы: Строка до: 'Строка (со скобками)'
Строка после: 'Строка '
Строка до: 'Падал(лишнее (лишнее) лишнее) прошлогодний снег (лишнее)'
Строка после: 'Падал прошлогодний снег '
Строка до: '(лишнее(лишнее))Падал прошлогодний (лишнее(лишнее(лишнее)))снег'
Строка после: 'Падал прошлогодний снег'
Сергей Усманов
мой вариант
FILTER0, FILTER1 = '(', ')'
def remove_round_bracket(INPUT):
l = len(INPUT)
trues = [True]*l
_pairs, _braces = [], []
for i in range(l):
letter = INPUT[i]
if letter in FILTER0:
_braces.append([i])
elif letter in FILTER1 and len(_braces):
pair = _braces.pop()
pair.append(i)
_pairs.append(pair)
for p in _pairs:
s, e = p
rl = e-s+1
trues[s:(e+1)] = [False]*rl
return(''.join([INPUT[i] for i in range(l) if trues[i]]) )
Похожие вопросы
- Помогите пж, я новичок в языке python.
- ЗАДАЧА ПО ПИТОНУ ПОМОГИТЕ ПЖ
- Помогите пж с задачей по Python.
- Помогите пж Важно:Когда нажимаешь на run в программе, должно показывать информацию о человеке, о учителе и о директоре.
- Информатика дз на языке питон, помогите пж
- Разве Нейросети сложно. Встретил школьника, он сказал что его попросили сделать распознавание цветов. Сделал за 2 дня
- Что лучше всего выбрать:1с или Пайтон?Пайтон выглядит поперспективнее, а 1с устарел( по моему новичковому взгляду )
- Задача 2. Дзен Пайтона
- Программирование пайтон, с чего начать ?
- Пайтон. Программа for while