784-字母大小写排列

xiaoxiao2021-02-28  19

Description

Given a string S, we can transform every letter individually to be lowercase or uppercase to create another string. Return a list of all possible strings we could create.


Examples: Input: S = "a1b2" Output: ["a1b2", "a1B2", "A1b2", "A1B2"] Input: S = "3z4" Output: ["3z4", "3Z4"] Input: S = "12345" Output: ["12345"]

Note:

S will be a string with length at most 12.S will consist only of letters or digits.

问题描述

给定字符串S,我们可以将它的每个字母转换为大写或者小写来产生新的字符串。返回所有可以产生的字符串的列表


问题分析

回溯法


解法(backtrack)

class Solution { public List<String> letterCasePermutation(String S) { List<String> res = new ArrayList<>(); backtracking(S.toCharArray(), 0, res); return res; } private void backtracking(char[] ch, int index, List<String> res) { if(index >= ch.length) { res.add(String.valueOf(ch)); }else{ char current = ch[index]; backtracking(ch, index + 1, res); if(current >= 'A' && current <= 'Z') { ch[index] = (char)((int)'a' + (current - 'A')); backtracking(ch, index + 1, res); }else if(current >= 'a') { ch[index] = (char)((int)'A' + (current - 'a')); backtracking(ch, index + 1, res); } } } }
转载请注明原文地址: https://www.6miu.com/read-1450182.html

最新回复(0)