首页 > 试题广场 >

字符串的排列

[编程题]字符串的排列
  • 热度指数:5087 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。


输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母,例如ac


输出描述:
[ac, ca]
示例1

输入

acc

输出

[acc, cac, cca]
import itertools
ss=input()
mm=sorted(set(map(''.join,itertools.permutations(ss))))
print("[" + ', '.join(mm) + "]")
最后输出‘,’后面还有一个空格,要不然格式不正确

发表于 2020-03-20 22:03:18 回复(0)
kk = list(input())
kk.sort()
def dfs(ss, res, aux):
    if len(ss) == 0:
        if res not in aux:
            aux.append(res)
    else:
        for i in range(len(ss)):
            newres = res + ss[i]
            dfs(ss[:i] + ss[i+1:], newres, aux)


res = ""
aux = []
dfs(kk, res, aux)
print("[" + ", ".join(aux) + "]")

发表于 2019-09-07 00:11:27 回复(0)
def permutation(s,i,lists):
    if i==len(s):
        lists.append(('').join(s))
    else:
        for j in range(i,len(s)):
            s[j],s[i]=s[i],s[j]
            permutation(s,i+1,lists)
            s[j],s[i]=s[i],s[j]



if __name__=="__main__":
    try:
        lists=[]
        s=list(input())
        permutation(s,0,lists)
        lists=sorted(lists)
        j=1
        print("[",end='')
        for i in lists:
            if j<len(lists):
               print(i+',',end=' ')
            else:
                print(i,end='')
            j+=1
        print("]")
    except:
        pass
发表于 2019-08-01 11:11:08 回复(0)