题解 | #字符串的排列#

字符串的排列

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))
全部评论

相关推荐

牛客38347925...:9,2学生暑期实习失利开始投小厂,给这群人整自信了
点赞 评论 收藏
分享
05-23 20:31
已编辑
武汉大学 Java
内向的柠檬精在研究求...:注意把武大标粗标大 本地你俩不是乱杀
实习进度记录
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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