【题目描述】
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc, acb, bac, bca, cab 和 cba。
输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
【解题思路】
这道题用递归来实现——把字符串分为两部分:
- 字符串的第一个字符
- 字符串中剩下的字符
递归实现方式为:
- 遍历字符串,求出所有可能在第一个位置出现的字符,此处需要注意去重
- 求剩下的字符的全排列,这部分继续用递归实现
用Python实现的代码如下:
# -*- coding:utf-8 -*-
class Solution:
def Permutation(self, ss):
# write code here
l = len(ss)
if l==0: return []
if l==1: return [ss]
ssList = list(ss)
ssList.sort()
ss = "".join(ssList)
ret = []
previous = None
for i in range(l):
if previous == ss[i]:
continue
else:
res = self.Permutation(ss[:i]+ss[i+1:])
for item in res:
ret.append(ss[i] + item)
previous = ss[i]
return ret
本文介绍了一种使用递归实现字符串全排列的算法,通过将字符串分为首个字符与剩余部分,递归求解剩余部分的全排列,并结合首个字符生成最终结果。文章详细解释了算法的实现过程,并提供了Python代码示例。
2552

被折叠的 条评论
为什么被折叠?



