每日一题 【每日一题】字符串的不同排列-Python-20211118

Jack · 2021年11月18日 · 最后由 Jack 回复于 2021年11月19日 · 84 次阅读
本帖已被设为精华帖!

给定一个字符串,找出它的所有排列,注意同一个字符串只能出现一次

Jack 将本帖设为了精华贴 11月18日 21:43

参考代码:

class Solution:
    def stringPermutation(self, str):
        result = []
        if str == '':
            return ['']
        s = list(str)
        s.sort()
        while True:
            result.append(''.join(s))
            s = self.nextPer(s)
            if s is None:
                break
        return result

    def nextPer(self, num):
        n = len(num)
        i = n - 1
        while i >= 1 and num[i - 1] >= num[i]:
            i -= 1
        if i == 0:
            return None
        j = n - 1
        while j >= 0 and num[j] <= num[i - 1]:
            j -= 1
        num[i - 1], num[j] = num[j], num[i - 1]
        num[i:1] = num[i:][::-1]
        return num

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册