1. 程式人生 > >Leetcode_dfs_遞迴問題_暴力搜尋問題

Leetcode_dfs_遞迴問題_暴力搜尋問題

 

在這個題目中,題目的意思是將每一個字串中的英文字母轉化為相反的大小寫然後再輸出,首先觀察到的是將字串本身輸出了,所以在搜尋前先將字串 本身搜尋一遍

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字串進入容器中。如果是數字此函式執行完畢,因為遞迴過程在棧中進行,所以自動退回到再上一次呼叫該函式的地方。以此類推來推算出整個字串所改變的型別。