剑指 Offer 38. 字符串的排列


输入一个字符串,打印出该字符串中字符的所有排列。

 

你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。

示例:

输入:s = "abc"
输出:["abc","acb","bac","bca","cab","cba"]

限制:

1 <= s 的长度 <= 8


全排列 II 相同
class Solution:
    def permutation(self, s: str) -> List[str]:
        s = list(s)
        lens = len(s)
        ret = []

        def swap(i, j):
            tem = s[i]
            s[i] = s[j]
            s[j] = tem

        def backStack(begin):
            if begin == lens:
                ret.append("".join(s))
                return
            myset = set()
            for i in range(begin, lens):
                if s[i] in myset:
                    continue
                else:
                    myset.add(s[i])
                swap(i, begin)
                backStack(begin + 1)
                swap(i, begin)

        backStack(0)
        return ret
 
  • 作者:peng的深远志向 (扫码联系作者)
  • 发表时间:2021-08-19 21:01:30
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 评论

    我去饿
    阿萨
    我去饿
    阿萨
    我去饿
    阿萨