#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param str string字符串
# @return string字符串一维数组
#
class Solution:
def wuhu(self, output: list, added_list: list, remain_list: list):
# 当剩余列表为空时,说明已经完成一种排列
if len(remain_list) == 0:
# 将当前排列拼接成字符串并添加到输出列表中
output.append(''.join(added_list))
for i in range(len(remain_list)):
# 跳过重复元素,避免生成重复的排列
if i > 0 and remain_list[i] == remain_list[i - 1]:
continue
# 复制当前已添加的列表,并添加当前元素
added_list_copy = added_list[:] + [remain_list[i]]
# 复制剩余列表,移除当前元素
remain_list_copy = remain_list[:i] + remain_list[i + 1:]
# 递归调用函数,继续生成排列
self.wuhu(output, added_list_copy, remain_list_copy)
def Permutation(self, str: str) -> List[str]:
# 对输入字符串进行排序,方便后续去重
sorted_str = sorted(str)
output, added_list, remain_list = [], [], sorted_str
# 调用递归函数生成排列
self.wuhu(output, added_list, remain_list)
return output