一、要求
输入一个字符串,按字典序打印出该字符串中字符的所有排列。
例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
结果请按字母顺序输出。
二、思路及代码
用for i in XXX递归+replace实现
def solution(string):
newstring=[]
result=[]
def digui(str):
for i in str:
res=str.replace(i,'')#剩下的,replace操作不改变str
newstring.append(i)
if len(res)!=0:#字符串不是数组,不能if res!=[]
digui(res)
else:
result.append(''.join(newstring))
newstring.pop()#位置不能错,不能放到else里面
digui(string)
return result
print(solution('abc'))
三、运行结果
['abc', 'acb', 'bac', 'bca', 'cab', 'cba']
四、思考与总结
a='adsads' b=a.replace('a','') print(a,b)
输出为:adsads dsds 表明没有改变a='adsads'
递归和replace的组合好神奇,构造了很多个变量,而不在原来的string上进行修改。