这题和91题相同,使用的是回溯搜索的办法
class Solution {
public:
vector<string> res;
vector<string> restoreIpAddresses(string s) {
if(s.size()>12) return res;
vector<string> tmp;
dfs(s,0,tmp);
return res;
}
void dfs(string s, int index, vector<string> &tmp){
if(index>=s.size()){
if(tmp.size()!=4) return;
string t;
for(int i=0;i<tmp.size();i++){
t+= (tmp[i]+".");
}
t.pop_back();
res.push_back(t);
}
for(int i=1;i<=3;i++){
if(index+i<=s.size()){
string str = s.substr(index,i);
int a = atoi(str.c_str());
if(a>255||(str.size()>1&&str[0]=='0')) continue;
tmp.push_back(str);
dfs(s,index+i,tmp);
tmp.pop_back();
}
}
}
};