【面試題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))

考點

  • 考查思維能力。當整個問題看起來不能直接解決的時候,能否想到把字符串分成兩部分,從而把大問題分解成小問題來解決,是能否順利解決這個問題的關鍵;
  • 對遞歸的理解和編程能力。

本題擴展
暫不做。

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