784. 字母大小写全排列

2023-12-13 05:22:37

字母大小写全排列

描述 :

给定一个字符串?s?,通过将字符串?s?中的每个字母转变大小写,我们可以获得一个新的字符串。

返回?所有可能得到的字符串集合?。以?任意顺序?返回输出。

回文串?是正着读和反着读都一样的字符串。

题目 :

LeetCode 784.?字母大小写全排列 :

784. 字母大小写全排列

分析 :

如果本题去掉数字,只告诉你两个字母ab,让你每个字母变化大小写,那就是ab、Ab、aB、AB四种情况,题目比电话号码问题还简单,这里的数字就是干扰项,我们需要做的是过滤掉数字,只处理字母。另外还要添加个大小写转换的问题。如下图所示:

由于每个字符的大小写形式刚好差了32,因此在大小写装换时可以用c32 来进行转换和恢复 .

解析 :?

class Solution {
    List<String> list = new ArrayList<>();
    public List<String> letterCasePermutation(String s) {
        char[] arr = s.toCharArray();
        dfs(arr,0);
        return list;
    }
    public void dfs(char[] arr,int start){
        while(start < arr.length && Character.isDigit(arr[start])){
            start++;
        }
        if(start == arr.length){
            list.add(new String(arr));
            return;
        }
        arr[start] ^= 32;
        dfs(arr,start + 1);
        arr[start] ^= 32;
        dfs(arr,start + 1);
    }
}

文章来源:https://blog.csdn.net/sytdsqzr/article/details/134956033
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。