【发布时间】:2020-08-22 09:33:07
【问题描述】:
我想要一个函数,将 str_a 中的最后一个元素围绕字符串移动到末尾。 (在这种情况下:'adbefc')然后 str_1 中的倒数第二个元素移动一个,然后最后一个元素再次移动到末尾。我想移动 所有 str_a 中除第一个元素之外的元素。
def arrange(str_a, str_b): #You don't need to use this variable
#TODO
>>> arrange('abc', 'def') #Example 1
['abcdef', 'abdcef', 'abdecf', 'abdefc', 'adbcef', 'adbecf', 'adbefc', 'adebcf', 'adebfc', 'adefbc']
>>> arrange('OXY', 'OOO') #Example 1a (Better insight)
['OXYOOO', 'OXOYOO', 'OXOOYO', 'OXOOOY', 'OOXYOO', 'OOXOYO', 'OOXOOY', 'OOOXYO', 'OOOXOY', 'OOOOXY']
>>> arrange('ab', 'cd') #Example 2
['abcd', 'acbd', 'acdb']
这就是我所做的,它只适用于 2 个字符的字符串。希望这能让我对我想要完成的工作有所了解
def arrange(str_a, str_b, idx = 0, lst = []):
idx += 1
length = len(str_a + str_b)
if idx == length - 1:
return lst
str_full = str_a + str_b
list_full = list(str_full)
elem = list_full[idx]
list_full[idx] = list_full[idx + 1]
list_full[idx + 1] = elem
lst.append(''.join(list_full))
middle_index = int(length/2)
str_a = ''.join(list_full[:middle_index])
str_b = ''.join(list_full[middle_index:])
return arrange(str_a, str_b, original, idx, rev,lst)
if __name__ == '__main__':
result = arrange('ab', 'cd')
print(result)```
【问题讨论】:
-
你能展示一下你到目前为止所做的尝试吗?
-
我尝试的是我做了一个可选参数 output = [] 并尝试使用 for 循环和递归来解决这个问题。它只适用于安排('ab','cd')。
-
呃,这不是作业吗??
-
我有一个正在运行的程序,但我尝试了另一种方法。如果这有帮助。它给了我一个带有大字符串的 MemoryError 并且效率不高。
-
元素的“顺序”重要吗?