LintCode 10 [String Permutation II]

原题

给出一个字符串,找到它的所有排列,注意同一个字符串不要打印两次。

样例
给出 "abb",返回 ["abb", "bab", "bba"]。
给出 "aabb",返回["aabb", "abab", "baba", "bbaa", "abba", "baab"]。

解题思路

  • 思路跟 Permutation II 完全一样

完整代码

class Solution:
    # @param {string} str a string
    # @return {string[]} all permutations
    def stringPermutation2(self, strs):
        # Write your code here
        if strs is None:
            return []
        res = []
        flags = [False] * len(strs)
        self.helper(sorted(strs), flags, "", res)
        return res
        
    def helper(self, strs, flags, path, result):
        if len(path) == len(strs):
            result.append(path)
            return
        
        for i in range(len(strs)):
            if not flags[i]:
                if i != 0 and not flags[i - 1] and strs[i] == strs[i - 1]:
                    continue
                flags[i] = True
                self.helper(strs, flags, path + strs[i], result)
                flags[i] = False
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,768评论 0 33
  • 描述 给出一个字符串,找到它的所有排列,注意同一个字符串不要打印两次 样例 给出 "abb",返回 ["abb",...
    6默默Welsh阅读 762评论 0 0
  • 字符串的全排列 题目描述: 输入一个字符串,打印出该字符串中字符的所有排列。 例如输入字符串abc,则输出由字符a...
    MinoyJet阅读 11,313评论 4 11
  • 3.10 69.给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问) 二叉树的层次遍历样例给一棵二叉树 {3...
    mytac阅读 1,097评论 3 3
  • 【微公益】【856】【每日经典】【20170828庄子066】 今日实不得便,只能现在写完发出,总算没有遗漏一日。
    北冥_鲲阅读 212评论 0 4