在这个题目中,题目的意思是将每一个字符串中的英文字母转化为相反的大小写然后再输出,首先观察到的是将字符串本身输出了,所以在搜索前先将字符串 本身搜索一遍
class Solution {
public:
vector<string> ans;
vector<string> letterCasePermutation(string S) {
dfs(S,0);
return ans;
}
void dfs(string S,int u)
{
if(u==S.size())
{
ans.push_back(S);
return;
}
dfs(S,u+1);
if(S[u]>='A')
{
S[u]^=32;
dfs(S,u+1);
}
}
};
将字符串本身先搜索完毕之后,return返回之前调用该函数的地方,就相当于返回上一个字母的位置,然后目前位置是在字符串倒数第二个字符的位置,此时最后还剩一个字母或者是数字,如果是字母,对S[U]进行位运算取32来达到大小写改变的目的然后再录入S字符串进入容器中。如果是数字此函数执行完毕,因为递归过程在栈中进行,所以自动退回到再上一次调用该函数的地方。以此类推来推算出整个字符串所改变的类型。