递归哦
class Solution {
private:
vector<string>ans;
public:
vector<string> restoreIpAddresses(string s) {
dfs(0,s,vector<string>(0));
return ans;
}
bool isOk(string t)
{
int num;
stringstream ss(t);
ss>>num;
if(t != to_string(num)) return false;
return num>=0 && num<=255;
}
void dfs(int start,string s,vector<string>t)
{
if(s.size() == start)
{
if(t.size() == 4)
{
string t1 = t[0];
for(int i = 1;i<4;i++)
{
t1 += "." + t[i];
}
ans.push_back(t1);
}
return ;
}
else if(t.size()<=3)
{
for(int i = 1; i <= 3; i++)
{
if(start+i <= s.size() && isOk(s.substr(start,i)))
{
t.push_back(s.substr(start,i));
dfs(start+i,s,t);
t.pop_back();
}
}
}
}
};