题解 | #字符串的排列#

字符串的排列

http://www.nowcoder.com/practice/fe6b651b66ae47d7acce78ffdd9a96c7

比较简单,返回全排列而已。使用下面的思路即可:

  1. 如果字符串长度是1,就直接返回;
  2. 若大于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))
全部评论

相关推荐

05-30 12:03
山西大学 C++
offer来了我跪着...:不是骗子,等到测评那一步就知道为啥这么高工资了
点赞 评论 收藏
分享
05-27 14:57
西北大学 golang
强大的社畜在走神:27届真不用急,可以搞点项目、竞赛再沉淀沉淀,我大二的时候还在天天打游戏呢
投递华为等公司10个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 12:23
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务