784. Letter Case Permutation

这个其实不算combination/permutation,或者说是特例,因为
12345
不会出现134,145,这种。都是同样长度,按照顺序,也不会有54321
所以没有for loop,只有两个固定的DFS recursion。
代码如下。

如果采用S做pathlist,改变S也行。

class Solution:
    def letterCasePermutation(self, S: str) -> List[str]:
        result = []
        pathlist = []
        def dfs(depth, result):
            if len(pathlist)==len(S):
                result.append("".join(pathlist))
                return
            i = depth
            if S[i].isalpha():
                if S[i].islower():
                    pathlist.append(S[i].upper())
                else:
                    pathlist.append(S[i].lower())
                dfs(depth+1, result)
                pathlist.pop()
                
            pathlist.append(S[i])
            dfs(depth+1, result)
            pathlist.pop()
        dfs(0, result)
        return result

你可能感兴趣的:(算法题)