Приведенный ниже код будет делать то, что вы хотите, когда более длинная строка (я назвал ее haystack
, начинается или заканчивается короткой строкой (needle
). Порядок параметров word1
и word2
не имеет значения .
NB Эта функция не работает, когда игла находится в середине строки, поскольку это может вызвать другие проблемы (например, что делать, если подстрока встречается несколько раз?).
word1 = "man"
word2 = "scotsman"
def changeSteps(word1, word2):
needle = word1 if len(word1) < len(word2) else word2
haystack = word1 if len(word1) > len(word2) else word2
if haystack.endswith(needle):
reverse=True
else:
reverse = False
if needle in haystack:
difference = haystack.replace(needle, "")
if reverse:
difference = ''.join(reversed(difference))
needle = ''.join(reversed(needle))
steps = [needle+difference[0:i] for i in range(1,len(difference)+1)]
if reverse:
steps = [ ''.join(reversed(s)) for s in steps ]
return steps
else:
return []
print(changeSteps(word1, word2))
РЕДАКТИРОВАТЬ: Также имейте в виду, что, когда строка начинается и заканчивается с needle
, который вы указали для поиска, функция рассчитает шаги изменения для , заканчивающихся иглой case.