Найти - Пользователи
Полная версия: регулярные выражения поиск в строке отрезка с вхождением всех символов
Начало » Python для новичков » регулярные выражения поиск в строке отрезка с вхождением всех символов
1
NK
Добрый день,
С регулярными выражениями мало сталкивалась, поэтому очень нужна помощь.
Есть строка размером N составленная из k элементов.
Нужно найти минимальный отрезок в строке из N элементов, с вхождением всех k возможных элементов не менее 1 раза
Например:
k = [1-5]
N = 19
Строка: 2222312543433333251
Ответ: 31254

Можно ли решить задачу через регулярные выражения и как это сделать?
Буду очень благодарна за помощь
py.user.next
NK
Можно ли решить задачу через регулярные выражения и как это сделать?
Через регулярные выражение её не решишь. (Можно ерунду только написать, далёкую от элегантного решения.)
NK
py.user.next
Спасибо за ответ! Подскажите, пожалуйста, хотя бы направление, как такую задачу решать?
py.user.next
NK
как такую задачу решать?
Вообще, надо составить юнит-тесты. Это чтобы не пропереться с какой-нибудь последовательностью. А то можно алгоритм написать, а он какую-нибудь редкую последовательность неправильно обработает. Чтобы его изменить, надо будет проверять все последовательности заново. И так каждый раз при любой ошибке.

Ну, допустим, мы их составили. Дальше само решение:
Допустим, у нас исходные данные:
k = [1-5]
N = 19
Строка: 1222233334343333325
Тогда в ответе будет вся эта строка.
Ответ: 1222233334343333325

Нужно сделать пустое множество и при проходе по строке от её начала заполнять его походящими элементами. Когда множество заполнится всеми элементами, надо всю строку, которую рассматривали, сохранить. Затем надо повторить процедуру со второго символа. Когда множество заполнится, нужно сравнить по длине новую строку со строкой из предыдущего шага. Если новая строка короче, то её сохранить вместо предыдущей. Затем повторить всё с третьего символа. Когда дойдёшь до последнего символа, у тебя останется сохранённой самая короткая строка, содержащая все символы.
NK
py.user.next
Спасибо! Все супер, написала, работает
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB