質問
面接の質問 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