剑指offer

面试题38. 字符串的排列

2020-03-20  本文已影响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))
上一篇下一篇

猜你喜欢

热点阅读