比较简单,返回全排列而已。使用下面的思路即可:
- 如果字符串长度是1,就直接返回;
- 若大于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))