我希望能够找到将一个字符串转换成另一个匹配字符串所需的最小字母交换次数。只允许相邻的交换。
输入是:字符串长度、字符串1、字符串2
一些例子:
Length | String 1 | String 2 | Output
-------+----------+----------+-------
3 | ABC | BCA | 2
7 | AABCDDD | DDDBCAA | 16
7 | ZZZAAAA | ZAAZAAZ | 6
这是我的代码:
def letters(number, word_1, word_2):
result = 0
while word_1 != word_2:
index_of_letter = word_1.find(word_2[0])
result += index_of_letter
word_1 = word_1.replace(word_2[0], '', 1)
word_2 = word_2[1:]
return result
它给出了正确的结果,但计算时间应保持在20秒以下。这里有两组输入数据(长度为1,000,000个字符的字符串):https://ufile.io/8hp46和https://ufile.io/athxu。在我的设置中,第一个大约需要40秒执行,而第二个则需要4分钟。如何在不到20秒的时间内计算结果?
srting
是否是故意的,也是有用的吗? - greybeard