xinyu04

导航

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;
    }
};

posted on 2022-07-25 17:18  Blackzxy  阅读(16)  评论(0编辑  收藏  举报