美文网首页剑指offer
面试题38. 字符串的排列

面试题38. 字符串的排列

作者: 人一己千 | 来源:发表于2020-03-20 01:33 被阅读0次

    题目

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

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

    示例:

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

    限制:

    1 <= s 的长度 <= 8

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/zi-fu-chuan-de-pai-lie-lcof
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    解法

    s本身比较小,而且本身就是个排列问题。
    上递归。
    需要注意的是,不能有重复元素,所以放到set再转list。

    class Solution:
        def permutation(self, s: str) -> List[str]:
            result = []
            
            def f(word,s):
                if s == '' : result.append(word)
                for i,c in enumerate(s):
                    f(word+c, s[:i]+s[i+1:])
            
            f('',s)
            return list(set(result))
    

    相关文章

      网友评论

        本文标题:面试题38. 字符串的排列

        本文链接:https://www.haomeiwen.com/subject/aykkyhtx.html