Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/89: Рейтинг темы: голосов - 89, средняя оценка - 4.67
16 / 14 / 4
Регистрация: 05.06.2019
Сообщений: 79

Обработка символьных строк

26.01.2021, 11:52. Показов 18025. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
57) В текстовом файле k8-20.txt находится цепочка из символов, в которую могут входить заглавные буквы латинского алфавита A…Z и десятичные цифры. Найдите длину самой длинной подцепочки, состоящей из одинаковых символов. Если в файле несколько подходящих цепочек одинаковой длины, нужно взять первую из них. Выведите сначала символ, из которого строится эта подцепочка, а затем через пробел – длину этой подцепочки.

Решаю так

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
with open(r'путь к файлу') as reader:
    
    f = reader.read()
    count_max = 0
    lit = f[0]
    lit_out = ''
 
    for elem in f[1:]:
        
        if elem in lit:
            lit += elem 
 
        elif elem not in lit:
 
            if len(lit) > count_max:
 
                count_max = len(lit)
                lit_out = lit[0]   
 
            lit = elem
    
print(lit_out, count_max)
Но в ответах (J 5), а у меня выводит (J 6). Где ошибка-то?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.01.2021, 11:52
Ответы с готовыми решениями:

Обработка символьных строк. Задача про футболистов
С клавиатуры вводится число N, обозначающее количество футболисто команды "Заря", а затем - N строк, в каждой из которых - информация...

Функции обработки символьных строк
Задачей является переместить первую букву каждого слова в конец того слова. Помогите исправить код. У меня переносит первую букву только...

Обработка символьных строк
Или лыжи не едут, или я... молодец. Помогите решить задачку. Даны две строки, содержащие русские слова, разделенные пробелами....

8
16 / 14 / 4
Регистрация: 05.06.2019
Сообщений: 79
26.01.2021, 11:54  [ТС]
Вот сам файл
Вложения
Тип файла: txt k8-20.txt (4.9 Кб, 22 просмотров)
0
16 / 14 / 4
Регистрация: 05.06.2019
Сообщений: 79
26.01.2021, 11:56  [ТС]
Ну и интересно было бы посмотреть, как можно решить эту задачу другим способом
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,307
26.01.2021, 15:36
вообщем я что то сам запутался. пока решил так но это очень не оптимально. сейчас разбираюсь за один проход. позже выложу
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
with open('file.txt') as f:
    data = f.read()
 
end = len(data)
start = 0
res = []
while start < end:
    line = data[start]
    for _ in range(start, end):
        start += 1 
        if  start != end and data[start ] in line :
            line += data[start ]
        else:
            res.append(line)
            break
result = max(res, key = len)
print(result[0],len(result))
1
16 / 14 / 4
Регистрация: 05.06.2019
Сообщений: 79
26.01.2021, 16:13  [ТС]
Перезагрузил комп, все заработало. Semen-Semenich, ваше решение тоже. Прошу прощения за глупый тред
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
это очень не оптимально
Скриншот со сравнением, нижняя строка - ваше время Наверное и неплохое, тоже раньше так решал
Но все равно спасибо
Я думал может можно как-то через регулярку решить, если конечно она тут уместна
Изображения
 
0
16 / 14 / 4
Регистрация: 05.06.2019
Сообщений: 79
26.01.2021, 16:19  [ТС]
Вот думаю сейчас как не выносить содержимое файла в переменную, а сразу пройтись по нему
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
26.01.2021, 16:22
Просто в лоб:
Python
1
2
3
4
5
6
7
8
9
10
result, maximum = "", 0
symbol, count = "", 0
for current in text:
    if current != symbol:
        if count > maximum:
            result, maximum = symbol, count
        symbol, count = current, 0
    count += 1
 
print(result, maximum)
1
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,307
26.01.2021, 17:55
DmFat, упссс. в лоб не работает.
Python
1
2
3
4
5
6
7
8
9
10
result, maximum = "", 0
symbol, count = "", 0
for current in 'XXXYZXYXXYYZXYXZZZZXXXXX':
    if current != symbol:
        if count > maximum:
            result, maximum = symbol, count
        symbol, count = current, 0
    count += 1
 
print(result, maximum)
Z 4
>>>
а самая длинная в конце XXXYZXYXXYYZXYXZZZZXXXXX

Добавлено через 1 час 9 минут
user1472382, за один проход. проверьте по времени разницу
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
with open('file.txt') as f:
    data = f.read()
 
 
symb = data[0]
res = data[0]
count_max = 0
temp_max = 0
 
for analog  in data:
    if analog == symb:
        temp_max += 1
        continue
    if temp_max > count_max:
            count_max = temp_max
            res = symb
    temp_max = 1
    symb = analog
   
if temp_max > count_max:
    count_max = temp_max
    res = symb
print(res, count_max)
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
26.01.2021, 19:17
Лучший ответ Сообщение было отмечено user1472382 как решение

Решение

Цитата Сообщение от user1472382 Посмотреть сообщение
Я думал может можно как-то через регулярку решить
Яволь!
Python
1
2
3
4
5
import re
 
with open('in.txt', 'r') as f_in:
    answer = max([i.group() for i in re.finditer(r'(?i)(\w)\1+', f_in.read())], key=len)
    print(f'{answer[0]} {len(answer)}')
Bash
1
J 5
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.01.2021, 19:17
Помогаю со студенческими работами здесь

Обработка символьных строк
Вывод неправильный и не понимаю что именно неправильно. var x: string; n, d: integer; //n - номер позиции, d - длина строки a:...

Обработка символьных строк
Дано k литерных строк. Каждая строка содержит латинские и русские буквы, цифры, а также все возможные разделители. Требуется: 1) выделить...

Обработка символьных строк
В исходной строке A после каждого вхождения заданного сочетания символов X вставить сочетание символов Y. Вывести иcходную и полученную...

Обработка символьных строк
Для каждого символа заданного текста указать, сколько раз он встречается в тексте. Сообщение об одном символе должно печататься не более...

Обработка символьных строк
Добрый день. Помогите пожалуйста с задачкой. Условие: Проверить, верно ли что в строке чередуются гласные и согласные буквы. Пробелы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru