python天天1道面試題(3)--字符串組合

"""
題目3:輸入一個字符串,輸出該字符串中字符的全部組合。

舉個例子,若是輸入abc,它的組合有a、b、c、ab、ac、bc、abc。

解題思路: 先用列舉法,舉例出組合元素長度分別是1,2,..,len(str)時的具體元素, 而後發現當數組長度>=3以後的規律是一致的,
前n個字符合體即li[:m],拼接上後面li[m:]的每個字符.
"""


def compose_str(str):
    li = [i for i in str]
    final_li = list()
    for m in range(len(li)):
        if m == 0:
            final_li.extend([i for i in li])
        elif m == 1:
            for n in range(len(li)):
                final_li.extend([li[n]+i for i in li[n+1:]])
        else:
            final_li.extend(''.join(li[:m])+i for i in li[m:])
    print(final_li)


str = 'abc'
compose_str(str)
#  輸出: ['a', 'b', 'c', 'ab', 'ac', 'bc', 'abc']

參考連接: https://blog.csdn.net/GetNextWindow/article/details/24202369,原文用java實現,具體思路可能有點不一樣.java

相關文章
相關標籤/搜索