class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return string字符串vector */ int max_num = 255; int min_num = 0; vector<string> ans; string res = ""; void dfs(string& s,int step){ if(step!=4 && s.empty()) return ; if(step==4 && !s.empty()) return ; if(step==4 && s.empty()) { res.pop_back();//去掉最后一个点 ans.push_back(res); return; } for(int i=0;i<3 && i<s.size();i++){ string tmp_str = s.substr(0,i+1); int tmp_int = stoi(tmp_str); if(tmp_str.size()!=to_string(tmp_int).size()) continue ;//表示将02,这样的数据当做地址 if(tmp_int>255) continue ;//错误的划分,出现了大于255的值。 string orginal_res = res; string orginal_s = s; res+=tmp_str; res+="."; s = s.substr(i+1); dfs(s,step+1); s = orginal_s; res = orginal_res; } } vector<string> restoreIpAddresses(string s) { // write code here if(s.empty()) return {}; if(s.size()<4) return {}; dfs(s,0); return ans; } };