版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}
};
这个递归类似于二叉树的递归。二叉树的递归是每次生成两支,一支左,一支右。这道题递归思路也类似,每个字母可以分成两支,一支大写,一支小写。