Определите максимальное количество идущих подряд символов, среди
Условие
Текстовый файл содержит только заглавные буквы латинского алфавита (ABC…Z). Определите максимальное количество идущих подряд символов, среди которых не более одной буквы D.Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
Задание 24
Ответ
Ответ и полный разбор откроются после входа
Посмотреть ответРешение по шагам
Как рассуждать
Решение. Будем посимвольно считывать файл. Каждую итерацию цикла while будем увеличивать счётчик k на единицу и использовать её как индекс. Если очередной считанный символ не является буквой D — будем увеличивать счётчик count на единицу. Также будем проверять, больше ли текущее значение счётчика count значения переменной maxlen. Если условие выполняется, будем обновлять значение переменной maxlen — это искомое значение. Если будет встречена буква D, будем проверять, встречена ли она в первый раз. Если до этого букв D в текущей последовательности не встречалось, будем запоминать текущую позицию буквы D и продолжать увеличивать значение счётчика count. Если буква D в текущей последовательности встречается во второй раз, будем присваивать значению счётчика count разность текущей итерации цикла while и индекса первой встреченной буквы D — таким образом будем учитывать и последовательность, начавшуюся от предыдущей встреченной буквы D. Также в этом случае обновим значение переменной i, отвечающей за хранение индекса последней встреченной буквы D. Приведём решение данной задачи на языке PascalABC.var i, count, maxlen, countD, k: integer;c: char;f: text;begin assign(f,'C:\24.txt'); reset(f); maxlen := 0; count := 0; countD := 0; k := 0; while not eof(f) do begin read(f, c); k := k + 1; if c <> 'D' then begin count := count + 1; if count > maxlen then maxlen := count; end else if countD = 0 then begin countD := 1; i := k; count := count + 1; if count > maxlen then maxlen := count; end else if countD = 1 then begin count := k - i; i := k; if count > maxlen then maxlen := count; end; end; writeln(maxlen);end. Приведём решение данной задачи на языке Python.f = open('24.txt')s = f.readline() k = []mx = 0 for i in range(len(s)): if s[i] == 'D': k.append(i) for j in range(len(k) - 2): c = k[j + 2] - k[j] - 1 mx = max(mx ,c)print(mx) В результате работы данного алгоритма при вводе данных из файла в условии получаем ответ —
Осталось ещё 1 шаг
Примечание. Путь к файлу необходимо указать…
Бесплатно · займёт минуту