В текстовом файле 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