leetcode784+建立二叉树遍历每一种大小写string的形式,递归

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013554860/article/details/88143062

https://leetcode.com/problems/letter-case-permutation/

class Solution {
public:
    void dfs(vector<string>& res, string S, int i)
    {
        if(i >=S.length()){
            res.push_back(S); //每一个树到最底层 就是一个结果
            return;
        }
        if(S[i]>='a'&&S[i]<='z'){
            S[i]-=32;
            dfs(res, S, i+1);
            S[i]+=32;
        }
        if(S[i]>='A'&&S[i]<='Z'){
            S[i]+=32;
            dfs(res, S, i+1);
            S[i]-=32;
        }
        dfs(res, S, i+1);
    }
    vector<string> letterCasePermutation(string S) {
        vector<string> res;
        dfs(res, S, 0);
        return res;
    }
};

这个递归类似于二叉树的递归。二叉树的递归是每次生成两支,一支左,一支右。这道题递归思路也类似,每个字母可以分成两支,一支大写,一支小写。

猜你喜欢

转载自blog.csdn.net/u013554860/article/details/88143062