Отрежьте m и n букв от конца строки, затем найдите количество витков, чтобы вернуть исходную строку - PullRequest
0 голосов
/ 29 мая 2020

Вопрос: даны строка, m и n.

ввод 1: исходная строка

ввод 2: m (меньше длины строки): вырезать m алфавитов из конца строки а затем добавить в начало строки.

ввод 3: n (меньше длины строки): отрежьте n алфавитов от конца строки, полученной на предыдущем шаге, и затем добавьте к началу этой строки.

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

def harry(str, m, n):
    le = len(str)
    org = str.upper()
    str = str.upper()
    turn = 0
    for i in str:
        str3 = str[-m:] # last n letters
        str = str.replace(' ', '')[:-m]
        str = str3 + str
        print(str)
        if org != str:
            turn = turn + 1
            str4 = str[-n:]
            str = str.replace(' ', '')[:-n]
            str= str4 + str
            print(str)
            turn = turn + 1
        if org == str:
            break
    print(turn)

str = input("Enter the string")
m=int(input("Enter the value of m"))
n=int(input("Enter the value of n"))
harry(str, m, n)

полученный результат:

Enter the stringarya
Enter the value of m1
Enter the value of n2
AARY
RYAA
ARYA
2

исходный результат, который должен быть получен:

3 

(Для возврата исходной строки Arya требуется 3 хода.)

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

1 Ответ

0 голосов
/ 02 июня 2020

На самом деле вы сделаете хотя бы один шаг, чтобы увидеть, равны они или нет. Таким образом, ваш ход должен начинаться с 1.

См .: https://ide.geeksforgeeks.org/Hw4AWx1O95

def harry(str, m, n):
    le = len(str)
    org = str.upper()
    str = str.upper()
    turn = 1 # <--------Here
    for i in str:
        str3 = str[-m:] # last n letters
        str = str.replace(' ', '')[:-m]
        str = str3 + str
        print(str)
        if org != str:
            turn = turn + 1
            str4 = str[-n:]
            str = str.replace(' ', '')[:-n]
            str= str4 + str
            print(str)
        if org == str:

            break
        turn = turn + 1 #< --------------- Here 

    print(turn)

str = input("Enter the string\n")
m=int(input("Enter the value of m\n"))
n=int(input("Enter the value of n\n"))
harry(str, m, n)
...