1. 程式人生 > 其它 >784. 字母大小寫全排列

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;
    }
}
心之所向,素履以往 生如逆旅,一葦以航