Решение. Для решения этой задачи считаем строку из файла. Инициализируем строковую переменную s1 со значением ABCDEFGHIJKLMNOPQRSTUVWXYZ. Посимвольно перебираем строку из файла, каждый раз проверяя, равен ли текущий символ символу, следующему через один после текущего, и, если условие выполняется, будем вставлять в строку s1 символ, идущий между двумя одинаковыми буквами в считанной строке, таким образом, чтобы в строке s1 соответствующие символы стояли рядом друг с другом (например, если из файла была считана строка ABAABA, строка s1 после выполнения алгоритма будет выглядеть так: ABBBCDEFGHIJKLMNOPQRSTUVWXYZ. После этого посчитаем длину самой длинной цепочки символов и таким образом получим ответ.
Приведём решение данной задачи на языке Pascal.
var
len, max, count: longint;
s, s1: string;
maxC: char;
f: text;
begin
assign(f,'C:\24.txt');
reset(f);
readln(f, s);
len := length(s);
s1 := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
for i:integer := 1 to len-2 do begin
if (s[i] = s[i+2]) then
s1 := s1.Substring(0, s1.LastIndexOf(s[i+1])) + s[i+1] + s1.Substring(s1.LastIndexOf(s[i+1]));
end;
len := length(s1);
max := 1;
count := 0;
for i:integer := 1 to len-1 do begin
if (s1[i] = s1[i+1]) then count := count + 1
else count := 0;
if count > max then begin
max := count;
maxC := s1[i];
end;
end;
writeln(maxC);
end.
В результате работы данного алгоритма при вводе данных из файла в условии получаем ответ — D.
Ответ: D.
Примечание. Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.
Приведём другое решение.
var
arr: array ['A'..'Z'] of integer;
i, max: integer;
j, res: char;
str: string;
f: text;
begin
assign(f, 'C:\24.txt');
reset(f);
readln(f, str);
for i:= 1 to str.Length - 2 do begin
if (str[i] <> str[i + 2]) then continue;
inc(arr[str[i + 1]]);
end;
for j:= 'A' to 'Z' do begin
if (arr[j] > max) then begin
max:= arr[j];
res:= j;
end;
end;
writeln(res);
end.
Приведём решение Виктора Кима на языке Python.
f = open("24.txt")
x = f.read()
count = {}
for i in range(1, len(x) - 1):
if x[i - 1] == x[i + 1]:
if x[i] not in count:
count[x[i]] = 1
else:
count[x[i]] += 1
print(max(count, key=lambda k: count[k]))
Приведём решение Аделины Багримовой на языке Python.
from collections import Counter
f = open('24.txt').readline()
a=[]
for i in range(len(f)-1):
if f[i-1]==f[i+1]:
a.append(f[i])
b=Counter(a)
print(b)
Приведём решение Юрия Красильникова на языке Python.
s = open('24.txt').readline()
a = [s[i] for i in range(1,len(s)-1) if s[i-1]==s[i+1]]
m = max([a.count(c) for c in set(a)])
print(*[c for c in set(a) if a.count(c)==m])
Приведём решение Бориса Савельева на языке Python.
s = open('24.txt').readline()
a = [0]*26
for i in range (1,len(s)-1):
if s[i-1] == s[i+1]:
a[ord(s[i])-65] += 1
print(chr(a.index(max(a))+65))
Приведём решение Сергея Калугина на языке Python.
s = open('24.txt').read()
p = []
for i in range(len(s)-2):
if s[i] == s[i+2]:
p.append(s[i+1])
print(max(p,key=p.count))
Приведём решение Михаила Самойлова на языке Python.
f = open('24.txt')
s = f.readline()
otv = []
for i in 'QWERTYUIOPASDFGHJKLZXCVBNM':
c = 0
for j in 'QWERTYUIOPASDFGHJKLZXCVBNM':
b = j+i+j
c += s.count(b)
otv.append([c, i])
print(*max(otv))