Модуль 18. Задача 8. Бегущая строка

В одном из домашних заданий мы писали для табло программу, которая которая циклически сдвигает элементы списка чисел вправо на K позиций. В этот раз мы работаем с двумя строками и нам нужно проверить, не равна ли на самом деле одна другой. Возможно, одна из них просто немного сдвинута.

Пользователь вводит две строки. Напишите программу, которая определяет, можно ли первую строку получить из второй циклическим сдвигом.

Опционально: если получить можно, то вывести значение этого сдвига.

Пример 1:

Первая строка: abcd
Вторая строка: cdab

Первая строка получается из второй со сдвигом 2.

Пример 2:

Первая строка: abcd
Вторая строка: cdba

Первую строку нельзя получить из второй с помощью циклического сдвига.

Решение:

str_1 = input('Первая строка: ')
str_2 = input('Вторая строка: ')

if str_1 == str_2:
    print('Строки одинаковые.')
else:
    if len(str_1) != len(str_2):
        print('Строки имеют разную длину.')
    else:
        shift = 1
        flag = False
        for i in range(len(str_1) - 1):
            str_2 = str_2[-1] + str_2[:-1]
            if str_1 == str_2:
                print(f'Первая строка получается из второй со сдвигом {shift}.')
                flag = True
                break
            else:
                shift += 1
        if not flag:
            print('Первую строку нельзя получить из второй с помощью циклического сдвига.')


Как можно отблагодарить:

  • Оформить удобную для вас подписку на Boosty.to
  • Разово поддержать через DonationAlerts
4480login-checkМодуль 18. Задача 8. Бегущая строка

Добавить комментарий