前言
在刷题中学习语言.
2022/10/30
leetcode每日一题:
题目代号 784
问题描述:
字母大小写全排列
问题解析:
- 深度遍历dfs回溯算法进行大小写转化
实现代码:
题解
class Solution {
public:
vector<string> letterCasePermutation(string s) {
vector<string> ans;
function<void(int)> dfs = [&](int i) {
if (i >= s.size()) {
ans.emplace_back(s);//插入元素
return;
}
dfs(i + 1);//递归调用
if (s[i] >= 'A') {//字母'A' = 65 ,'a' = 97
s[i] ^= 32;//转化为小写
dfs(i + 1);
}
};
dfs(0);
return ans;
}
};
测试
参考文档:
总结
emplace_back()直接在容器尾部构造
push_back()先在外部构造,然后调用移动构造,或拷贝构造函数添加到容器尾部
ch ^= 32;用于字母大小写的相互转换