面试题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))