题目描述:
题解:回溯DFS
思路其实很简单
1.result保存最终结果,currs记录当前路径上得到的字符串,idx表示当前匹配到s的位置。
2.从输入s的第一个字符开始,如果当前对应字符是字母,则可以按照大小写两种情况拼街到currs中,否则直接把s[idx]加入即可。
3.因为采用字符串拼接的方式,不需要回溯的过程。
以a1b2为例:
class Solution(object): def letterCasePermutation(self, s): result = [] lens = len(s) if s=='': return result def dfs(currs,idx): if idx == lens: result.append(currs) return if s[idx]>='a' and s[idx]<='z': dfs(currs+s[idx],idx+1) dfs(currs+s[idx].upper(),idx+1) elif s[idx]>='A' and s[idx]<='Z': dfs(currs + s[idx], idx + 1) dfs(currs + s[idx].lower(), idx + 1) else: dfs(currs+s[idx],idx+1) dfs('',0) return result