给定一个字符串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 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
int n
;
public List
<String> letterCasePermutation(String S
) {
initial(S
);
return letterCasePermutation(new LinkedList<>(), S
.toCharArray(), 0);
}
private List
<String> letterCasePermutation(List
<String> ans
, char[] chars
, int i
) {
if (i
== n
) {
String value
= String
.valueOf(chars
);
ans
.add(value
);
return ans
;
}
if (Character
.isLetter(chars
[i
])) {
chars
[i
] = Character
.toLowerCase(chars
[i
]);
ans
= letterCasePermutation(ans
, chars
, i
+ 1);
chars
[i
] = Character
.toUpperCase(chars
[i
]);
ans
= letterCasePermutation(ans
, chars
, i
+ 1);
return ans
;
}
return letterCasePermutation(ans
, chars
, i
+ 1);
}
private void initial(String _S
) {
n
= _S
.length();
}