784. Letter Case Permutation

题目地址:https://leetcode.com/problems/letter-case-permutation/description/
大意:返回一个列表,列表中列举所有给定字符串中字母所有大小写的情况

思路1:普通的循环添加

class Solution:
    def letterCasePermutation(self, S):
        """
        :type S: str
        :rtype: List[str]
        """
        rlist = [S]
        for i,item in enumerate(S):
            if not item.isalpha():
                continue
            l_new = []
            for strings in rlist:
                swap_str = (strings[:i] + strings[i].swapcase() + strings[i + 1:])
                print(swap_str)
                l_new.append(swap_str)
            rlist.extend(l_new)
        return rlist

思路2:DFS算法(参考花花酱的解题思路)


DFS流程图

我们发现,这个二叉树的深度就是字符串的长度。

class Solution:
 def letterCasePermutation(self, S):
   ans = []

   def dfs(S, i, n):
     if i == n:
       ans.append(''.join(S))
       return
     
     dfs(S, i + 1, n)      
     if not S[i].isalpha(): return      
     S[i] = S[i].swapcase()
     dfs(S, i + 1, n)
     S[i] = S[i].swapcase()
   
   dfs(list(S), 0, len(S))
   return ans




所有题目解题方法和答案代码地址:https://github.com/fredfeng0326/LeetCode
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容