class Solution {
public:
vector<string> ret;//存最终结果
string path;//记录当前路径
vector<string> letterCasePermutation(string s) {
dfs(s,0);
return ret;
}
void dfs(string& s,int pos)
{
//如果pos深度满足条件则返回
if(pos==s.size())
{
ret.push_back(path);
return ;
}
//无论是数字还是字母都包含一种本身不改变的情况
//二叉树结构
//不改变的情况
char ch = s[pos];
path +=ch;
dfs(s,pos+1);
path.pop_back();//回溯过程
//若为字母,则需要考虑转变大小写的情况
//改变的情况
if(ch<'0'||ch>'9')
{
if(ch>='a'&&ch<='z')
{
ch-=32;//小转大
}
else
{
ch+=32;//大写转小写
}
path+=ch;
dfs(s,pos+1);
path.pop_back();//回溯过程
}
}
};
欢迎大家在评论区交流讨论,批评指正!