通过万岁!!!
- 题目:就是将字符串中的字符,分别转换成大小字母,所构成的排列情况进行统计。
- 思路:就是用递归,然后每次遇到字母,就转变大小写继续统计,如果不是字母,则直接继续继续即可。这里最开始吧结束位置给找到了,就是最后一个字母的位置。
- 技巧:递归,深度优先
java代码
class Solution {
List<String> ans = new ArrayList<>();
public List<String> letterCasePermutation(String s) {
char[] chars = s.toCharArray();
int end = 0;
for (int i = chars.length - 1; i >= 0; --i) {
if (Character.isAlphabetic(chars[i])) {
end = i;
break;
}
}
getList(0, end + 1, chars);
return ans;
}
public void getList(int begin, int end, char[] chars) {
if (begin == end) {
ans.add(String.valueOf(chars));
return;
}
if (Character.isAlphabetic(chars[begin])) {
getList(begin + 1, end, chars);
if (chars[begin] < 97) {// 大写
chars[begin] += 32;// 大写变小写
} else {
chars[begin] -= 32;// 大写变小写
}
getList(begin + 1, end, chars);
} else {
getList(begin + 1, end, chars);
}
}
}
- 总结:题目比较简单,其实可以用for循环进行,因为递归本身就是一层for循环。