Найти - Пользователи
Полная версия: Нужна помощь по регулярным выражением re
Начало » Python для новичков » Нужна помощь по регулярным выражением re
1 2 3 4
vic57
AD0DE412
Нужна помощь по регулярным выражением re
эээ … у вас … вы исходите из предположения что самый длинный элемент один (что не всегда так)
для этого список и применен
FishHook
Так, стоп. По ходу пьесы, мы вообще решаем разные задачи. Мой код отдает последовательность одинаковых символов. Что, кажется, неправильно по ТЗ. Моя критика несостоятельна, при условии поиска любой подстроки в один проход, конечно, не получится.
AD0DE412
vic57 таки да тольки его еще раз нужно обработать к примеру в for - else (после else обработка)
AD0DE412
FishHook
По ходу пьесы, мы вообще решаем разные задачи.
у меня на пробнике ЕГЭ по информатике подобное было на прошлой неделе
… в общем итог печален.
vic57
AD0DE412
… в общем итог печален.
что печально? на выходе список повторяющихся подстрок в строке, как вы будете обрабатывать его - ваше дело.
разве что максимум длины подстроки добавить
 s = 'arefhjaref!!'
out = []
max_len = 0
for i in range(len(s)):
    t = s[i:]
    for j in range(len(t),1,-1):
        s1,s2 = t[:j],t[j:]
        if s2.find(s1) < 0: continue
        if len(s1) < max_len: continue
        max_len = len(s1)
        out.append(s1)
out.sort(key = lambda x: len(x),reverse=True)
print(out)
на с++ зто вообще две стандартных функции - substr и find.
AD0DE412
vic57 ну что печально? мной не набрано нужных балов по пробнику егэ по информатике потому что невнимательно было прочитано ТЗ … это же не повод для радости?
(подозреваю что вы на свой счет все воспринемаете, зря)
а ваш код всяко - разно лучше моего, только не дожат
rami
oldjaponec@gmail.com
Задача такая. Дана строка. Надо определить самую длинную повторяющуюся подстроку.
 s = 'ntarefhjaref!!bvfhjarefantarefh'
 
def long_substr():
    n = len(s)//2
    b = True
    while b:
        for i in range(len(s) - n*2 +1):
            if s[i:i+n] in s[i+n:]:
                yield s[i:i+n]
                b = False
        if n < 2:
            return
        n -= 1
 
print('long_substr =', list(long_substr()))
vic57
rami
сильно. не вникал особо в код, но по быстродействию почти С++. только я бы ф-цию с параметром сделал -
def f(string)
rami
vic57
только я бы ф-цию с параметром сделал -
def f(string)
Для демонстрации алгоритма это не обязательно, но согласен, что функция без передачи параметра выглядит как недоделанная.
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