比较简单,返回全排列而已。使用下面的思路即可:

  1. 如果字符串长度是1,就直接返回;
  2. 若大于1,首先对字符串排序,然后遍历字符串,将第i个字符作为首个元素,得到剩下元素的全排列(递归实现),如果第i个元素和第i-1个元素一样就不用递归了。
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param str string字符串 
# @return string字符串一维数组
#
class Solution:
    def Permutation(self , str: str) :
        # write code here
        if str == '':
            return []
        if len(str) == 1:
            return [str]
        else:
            str = sorted(str)
            new_str = ''
            for _ in str:
                new_str+=_
            str = new_str
            new_result = []
            for i in range(len(str)):
                if i == 0:
                    tmp = str[0]
                    result = self.Permutation(str[1:])
                    for j in range(len(result)):
                        new_result.append(tmp+result[j])
                elif str[i]!=str[i-1]:
                    tmp = str[i]
                    result = self.Permutation(str[:i]+str[i+1:])
                    for j in range(len(result)):
                        new_result.append(tmp+result[j])
            return new_result

str = 'bac'
print(Solution().Permutation(str))