インタビューの質問 08.07. 重複のない文字列の順列と組み合わせ

質問

面接の質問 08.07. 非反復文字列の順列と組み合わせ.
非反復文字列の順列と組み合わせ。文字列の各文字が異なる、文字列のすべての順列を計算するメソッドを作成します。

例 1:

入力: S = "qwe"
出力: ["qwe", "qew", "wqe", "weq", "ewq", "eqw"]
例 2:

入力: S = "ab"
出力: ["ab", "ba"]
ヒント:

文字は全て英字です。
文字列の長さは [1, 9] の間です。

問題解決のアイデア

pre を使用して 1 つの要素 + 他の要素の順序を決定し、以前に決定されたデータを渡します

コード

class Solution:
    def permutation(self, S: str) -> List[str]:
        return self.doIt(list(S), '')

    def doIt(self, s: List[str], pre: str) -> List[str]:
        size = len(s)
        if size == 1:
            return [pre + s[0]]
        ans = []
        for i in range(size):
            ans += self.doIt(s[1:], pre + s[0])
            if i < size - 1:
                s[0], s[i + 1] = s[i + 1], s[0]
        return ans

おすすめ

転載: blog.csdn.net/TY_GYY/article/details/125070920