给定一个字符串S
,通过将字符串S
中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。
示例: 输入: S = "a1b2" 输出: ["a1b2", "a1B2", "A1b2", "A1B2"] 输入: S = "3z4" 输出: ["3z4", "3Z4"] 输入: S = "12345" 输出: ["12345"]
回溯:
static IList<IList<char>> res = new List<IList<char>>();
static void Main(string[] args)
{
List<string> res = new List<string>();
LetterCasePermutation("1s1s");
}
public static IList<string> LetterCasePermutation(string S)
{
List<string> res = new List<string>();
Helper(S.ToCharArray(), 0, res);
return res;
}
public static void Helper(char[] arr, int index, List<string> res)
{
if (index == arr.Length)
res.Add(new String(arr));
else
{
if (Char.IsDigit(arr[index]))
Helper(arr, index + 1, res);
else
{
arr[index] = Char.ToUpper(arr[index]);
Helper(arr, index + 1, res);
arr[index] = Char.ToLower(arr[index]);
Helper(arr, index + 1, res);
}
}
}
要理解回溯算法的结构。