1. 程式人生 > >Leetcode_dfs_93. Restore IP Addresses_IP地址問題

Leetcode_dfs_93. Restore IP Addresses_IP地址問題

此題所想表明的意思是,在題目給定的一串以數字組成的字串,讓你分割成IP地址,IP地址每一位數字必定小於256大於0,如果為零,單獨一位給零。

所以我們這個題用列舉的思想來做即首先定義一個全域性變數,vector<string> ans,然後定義一個u來表示目前在string字串的哪個位置然後定義一個K來表示已經生成了第幾個數字。下面是我的程式碼

class Solution {
public:
    
    vector<string> ans;
    
    vector<string> restoreIpAddresses(string s) {
        string path;
        dfs(s,0,0,path);
        return ans;
    }
    
    void dfs(string &s,int u,int k,string path)
    {
        if(u==s.size())
        {
            if(k==4)
            {
                ans.push_back(path.substr(1));//因為輸出時多了前面多了一個點
            }
            return;
        }
        if(k>4)//剪枝
            return ;
        if(s[u]=='0') dfs(s,u+1,k+1,path+".0");
        else
            for(int i=u,t=0;i<s.size();i++)
            {
                t=t*10+s[i]-'0';//實時更新一個數字
                if(t<256)
                {
                    dfs(s,i+1,k+1,path+'.'+to_string(t));//保證更新的數字在255內然後繼續遞迴尋找下一個數字
                }
                else return;
            }
   
    }

};

演算法之路剛剛開始,加油!!!

we have been working on it!!!!!