【面试题38】字符串的排列

在这里插入图片描述
Python题解

# -*- coding:utf-8 -*-
class Solution:
    def Permutation(self, ss):
        def helper(s, i, res):
            if i == len(s)-1:res.add(s)
            else:
                for j in range(i, len(s)):
                    tmp = s[i]
                    s = s[:i] + s[j] + s[i+1:]
                    s = s[:j] + tmp + s[j+1:]
                    helper(s, i+1, res)
                    tmp = s[i]
                    s = s[:i] + s[j] + s[i+1:]
                    s = s[:j] + tmp + s[j+1:]
        if ss == "":return []
        res = set()
        helper(ss, 0, res)
        return sorted(list(res))

考点

  • 考查思维能力。当整个问题看起来不能直接解决的时候,能否想到把字符串分成两部分,从而把大问题分解成小问题来解决,是能否顺利解决这个问题的关键;
  • 对递归的理解和编程能力。

本题扩展
暂不做。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章