leetcode 784. 字母大小写全排列
给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。
示例:
输入:S = "a1b2"
输出:["a1b2", "a1B2", "A1b2", "A1B2"]
输入:S = "3z4"
输出:["3z4", "3Z4"]
输入:S = "12345"
输出:["12345"]
提示:
S 的长度不超过12。
S 仅由数字和字母组成。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/letter-case-permutation
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
1:递归遍历字符串,若是遇到字母,则搜索两个方向,否则搜索一个方向。
2:并且char中大小写字母相差32,可直接用char运算来转换字符大小。
private StringBuilder sb = new StringBuilder(); private List<String> list = new ArrayList<>(); private char[] arr; private int length; public List<String> letterCasePermutation(String s) { arr = s.toCharArray(); length = s.length(); find(0); return list; } private void find(int index) { if (length == index) { list.add(sb.toString()); return; } char c = arr[index]; sb.append(c); find(index + 1); if (c >= 'A' ) { sb.deleteCharAt(sb.length() - 1); sb.append((char) (c^32)); find(index + 1); } sb.deleteCharAt(sb.length() - 1); }