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