题目描述:
主要思路:
开始想着用dfs按位递归,但是有些条件总是判断不好,然后看了题解发现了每一步可以循环1-3位,这样就什么都好判断了。
class Solution {
public:
vector<string> ans;
int n;
void dfs(int index,int k,string nowans,string s)
{
if(k==4||index==n)
{
if(k==4&&index==n)
ans.push_back(nowans);
return;
}
for(int i=1;i<=3;++i)
{
if(index+i>n) continue;
if(s[index]=='0'&&i!=1) continue;
string nows = s.substr(index,i);
if(i==3&&nows>"255") continue;
if(k!=3)
nows+='.';
dfs(index+i,k+1,nowans+nows,s);
}
}
vector<string> restoreIpAddresses(string s) {
n=s.length();
string nowans="";
dfs(0,0,nowans,s);
return ans;
}
};