Тема 24. Обработка символьной информации
24.02 Поиск символа/строки по частоте
Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела обработка символьной информации
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#55615

В текстовом файле 6.txt. находится цепочка из символов латинского алфавита A, B, C, D, E. Определите количество подстрок длиной не менее 10 символов, которые начинаются буквой A, заканчиваются буквой D и не содержат других букв A и D, кроме первой и последней.

Вложения к задаче
Показать ответ и решение

Решение №1

f = open(’24.txt’)
s = f.readline()
ans = 0
for i in range(len(s)):
    if s[i] == ’A’: #Возможно, здесь начинается нужная подстрока
        for j in range(i + 1, len(s)): #Запускаем цикл со следующего элемента
            if s[j] == ’A’: #Если попали на вторую букву А, то подстрока нам не подходит
                break
            if s[j] == ’D’: #Если попали на букву D
                if (j - i + 1) >= 10: #Если длина подстроки больше 10
                    ans += 1 #Нашли подходящую подстроку, увеличиваем счётчик
                break #Либо нашли подходящую подстроку, либо длина меньше 10 и мы её пропускаем
print(ans)

Решение №2

f = open(’24.txt’)
s = f.readline()
k = 0
for i in range(len(s) - 9): #Изменили длину цикла
    if s[i] == ’A’:
        for n in range(9, len(s)): #Подходящая последовательность может быть при n = 9. Длина подстроки, заключённой
                                #между эл-тами s[0] и s[9] равна 9 - 0 + 1 = 10 >= 10.
            if s[i + n] == ’D’:
                b = s[i:i + n + 1]
                if b.count(’A’) == 1 and b.count(’D’) == 1:
                    k += 1
                    print(b)
                else: #Если условие выше не выполнилось, то в текущей подстроке уже несколько букв A или D, которые,
                    #очевидно, останутся в подстроке, даже если мы сдвинем её правую границу (n)
                    break #Прерываем цикл с такой подстрокой
print(k)

Ответ: 76

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное обучение
в Школково

Для детей ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Брянской областей, а также школьникам, находящимся в пунктах временного размещения Крыма обучение на платформе бесплатное.

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ или олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!