784. 字母大小写全排列

给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/letter-case-permutation
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

import java.util.ArrayList;
import java.util.List;

class Solution {

    private List<String> ret = new ArrayList<>();

    private void solve(char[] str, int index) {
        if (str.length == index) {
            ret.add(new String(str));
            return;
        }
        solve(str, index + 1);
        if (Character.isAlphabetic(str[index])) {
            if (Character.isLowerCase(str[index])) {
                str[index] = Character.toUpperCase(str[index]);
                solve(str, index + 1);
                str[index] = Character.toLowerCase(str[index]);
            } else {
                str[index] = Character.toLowerCase(str[index]);
                solve(str, index + 1);
                str[index] = Character.toUpperCase(str[index]);
            }
        }
    }

    public List<String> letterCasePermutation(String s) {
        solve(s.toCharArray(), 0);
        return ret;
    }
}
posted @ 2021-12-21 13:59  Tianyiya  阅读(106)  评论(0)    收藏  举报