Leetcode_dfs_93. Restore IP Addresses_IP地址問題
阿新 • • 發佈:2018-11-10
此題所想表明的意思是,在題目給定的一串以數字組成的字串,讓你分割成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!!!!!