LeetCode 784 Letter Case Permutation DFS
Given a string s
, you can transform every letter individually to be lowercase or uppercase to create another string.
Return a list of all possible strings we could create. Return the output in any order.
Solution
每个字母可以变成大写或者小写,所以不妨直接对于这两种情况分别进行 \(DFS\), 这里我们记录一下此时的 \(idx\), 当
\[idx = s.size()
\]
我们就可以把字符串加入到最终的答案中。
点击查看代码
class Solution {
private:
vector<string> ans;
string tmp;
set<string> st;
bool check_num(char c){
if(c>='0' && c<='9')return true;
return false;
}
bool check_low(char c){
if(c>='a' && c<='z')return true;
return false;
}
void dfs(vector<string>& ans, string cur, int idx, string& s){
if(idx == s.length()){ans.push_back(cur);return;}
if(check_num(s[idx])){
cur.push_back(s[idx]); dfs(ans, cur, idx+1, s);
}
else{
string tmp = cur;
tmp.push_back(tolower(s[idx]));
dfs(ans, tmp, idx+1, s);
tmp = cur;
tmp.push_back(toupper(s[idx]));
dfs(ans, tmp, idx+1, s);
}
}
public:
vector<string> letterCasePermutation(string s) {
dfs(ans, "", 0, s);
return ans;
}
};