Самая длинная последовательность символов Python в строке

#python #string #character #lab

#python #строка #символ #лабораторная работа

Вопрос:

Я изучаю python и столкнулся с проблемой в лаборатории. Необходимо вычислить самую длинную последовательность s символа в строке, можно использовать только базовые инструменты, такие как циклы for .

Код, который я придумал, работает, но кажется, что я использую неподходящую логику, добавляя sequence_extended переменную с дополнительным пробелом. Однако без этого расширения при условии, что последовательность, например sssdssss , вычисление работает только для первой последовательности.

Может ли быть способ избежать этого расширения? Я пытался найти идею, но решение обычно заключается в использовании функций, которые нам пока запрещено использовать, таких как списки и т. Д.

 sequence = input('enter a line: ')
sequence_extended = sequence   ' '
counter = 0
final_counter = 0

for symbol in sequence_extended:
  if symbol == 's':
    counter  = 1
    
  else:
    if counter > final_counter:
        final_counter = counter
        counter = 0


print("The longest sequence of 's':", final_counter)
 

Комментарии:

1. Вам не разрешено использовать словари, верно?

2. @Mick да, точно

3. Это простой вопрос, подождите

4. Вам нужно добавить строку для того, что произойдет, если последним символом будет «s». Как у вас есть сейчас, конечный счетчик обновляется только в том случае, если последний символ не является «s» (почему добавление дополнительного пробела в конце исправляет его).

5. разрешено ли вам использовать цикл while? Я могу сделать это вместо цикла for, если нет

Ответ №1:

 sequence = "sssdssss"
max_len = 0

for i in range(len(sequence)):
    if sequence[i] == "s":
        j = i
        length = 0
        while j < len(sequence) and sequence[j] == "s":
            length  = 1
            j  = 1
        if length > max_len:
            max_len = length

print("The longest sequence of 's':", max_len)
 

Комментарии:

1. Большое спасибо! Полностью работает, и я понимаю логику. Ценю это!

2. Нет проблем, счастливого кодирования!

Ответ №2:

На самом деле, я придумал еще менее сложный вариант:

 sequence = input('enter a sequence: ')

first_counter = 0
second_counter = 0

for symbol in sequence:
  if symbol == 's':
    first_counter  = 1
  if symbol != 's':
    first_counter = 0  
  if second_counter < first_counter:
    second_counter = first_counter
print("the longest sequence of 's':", second_counter)
 

Кажется, это оптимальное решение для этого вопроса. На всякий случай, если у кого-то еще есть такая лаборатория, которую нужно решить.