【回溯&&dfs】leet 784. 字母大小写全排列
给定一个字符串 s
,通过将字符串 s
中的每个字母转变大小写,我们可以获得一个新的字符串。
返回 所有可能得到的字符串集合 。以 任意顺序 返回输出。
示例 1:
输入:s = "a1b2" 输出:["a1b2", "a1B2", "A1b2", "A1B2"]
示例 2:
输入: s = "3z4" 输出: ["3z4","3Z4"]
提示:
1 <= s.length <= 12
s
由小写英文字母、大写英文字母和数字组成
代码:
public List<String> letterCasePermutation(String s) { List<String> ans=new ArrayList<>(); dfs(s.toCharArray(),0,new StringBuilder(),ans); return ans; } private void dfs(char[] cs,int start,StringBuilder sb,List<String> ans){ if(start==cs.length){ ans.add(sb.toString()); return; } if(Character.isDigit(cs[start])){ sb.append(cs[start]); dfs(cs,start+1,sb,ans); }else{ int slen=sb.length(); sb.append(Character.toLowerCase(cs[start])); dfs(cs,start+1,sb,ans); sb.setLength(slen); sb.append(Character.toUpperCase(cs[start])); dfs(cs,start+1,sb,ans); sb.setLength(slen); } }
算法笔试题解-回溯系列 文章被收录于专栏
算法笔试题解-回溯系列