题目链接
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200810194420713.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjYzMjYz,size_16,color_FFFFFF,t_70)
思路:
代码:
class Solution {
public:
vector<string> ans;
bool check(string s)
{
int sum=0;
string temp;
for(int i=0;i<s.size();i++)
{
if(s[i]!='.')
{
sum=sum*10+s[i]-'0';
temp+=s[i];
}
else{
if(sum>255||sum<0||to_string(sum)!=temp)
return false;
else
{
sum=0;
temp="";
}
}
}
if(sum>255||sum<0||to_string(sum)!=temp)
return false;
else
return true;
}
void dfs(int pos,string s,string temp,int cnt)
{
if(cnt==4)
{
if(temp.size()==s.size()+3&&check(temp))
ans.push_back(temp);
return ;
}
string x=temp;
for(int i=pos;i<pos+3;i++)
{
x+=s[i];
if(cnt!=3)
dfs(i+1,s,x+".",cnt+1);
else
dfs(i+1,s,x,cnt+1);
}
}
vector<string> restoreIpAddresses(string s) {
if(s.size()<4||s.size()>12)
return ans;
dfs(0,s,"",0);
return ans;
}
};