
Текстовый файл состоит не более, чем из 107 строчных букв английского алфавита. Найдите максимальную длину подстроки, в которой символы a и d не стоят рядом.
Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
Решение. Заменяем все вхождения «da» и «ad» на строки
| Паскаль |
|---|
var f: text; s: string; ar_s: array of string; m, i: integer; begin assign(f, '24.txt'); f.reset(); readln(f, s); s := s.replace('da', 'd a').replace('ad', 'a d'); m := 0; ar_s := s.split(); for i := 0 to ar_s.Length - 1 do if ar_s[i].Length > m then m := ar_s[i].Length; writeln(m); end. |
| Python |
f = open('24.txt') s = f.readline()\ .replace('ad', 'a d')\ .replace('da', 'd a') w = list(map(len, s.split())) print(max(w)) |
В результате работы данного алгоритма при вводе данных из файла в условии получаем ответ — 2252.
Приведём другое решение.
Минимальная длина последовательности
| Паскаль |
|---|
var f: text; s: string; c, m, i: integer; begin assign(f, '24.txt'); f.reset(); readln(f, s); c := 1; m := 0; for i := 2 to s.Length do begin if not(s[i-1:i+1] in ['da', 'ad']) then c := c + 1 else c := 1; m := max(m, c); end; writeln(m); end. |
| Python |
f = open('24.txt') s = f.readline() c, m = 1, 0 for i in range(1, len(s)): if s[i-1:i+1] not in ['da', 'ad']: c += 1 else: c = 1 m = max(m, c) print(m) |
| С++ |
#include <iostream> #include <fstream> using namespace std; int main(){ ifstream f("24.txt"); string s; f >> s; int c = 1, m = 0; for(int i=1; i<s.length(); i++){ if(!(s[i-1] =='d' && s[i] == 'a' || s[i-1] =='a' && s[i] == 'd')) c = c + 1; else c = 1; if(m < c) m = c; } std::cout << m; } |
Ответ: 2252.
Примечание. Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.
Приведем решение Бориса Савельева на языке Python.
f = open('24.txt').readline()
cnt = 0
maxi = 0
for i in range (0,len(f)-1):
if (f[i]=='d' and f[i+1]=='a') or (f[i]=='a' and f[i+1]=='d'):
maxi = max(cnt+1,maxi)
cnt = 0
else:
cnt += 1
print(maxi)
Приведем решение Ильи Андрианова на языке Python.
s = open('24.txt').readline()
s = s.replace('ad', 'a d').replace('da', 'd a')
print(max([len(x) for x in s.split()]))
PDF-версии: