Текстовый файл содержит только заглавные буквы латинского алфавита (ABC…Z). Определите символ, который чаще всего встречается в файле между двумя одинаковыми символами.
Например, в тексте CBCABABACCC есть комбинации CBC, ABA (два раза), BAB и CCC. Чаще всего — 3 раза — между двумя одинаковыми символами
Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
Для решения этой задачи считаем строку из файла. Инициализируем строковую
Приведём решение данной задачи на языке 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))

