题目链接
思路:
代码:
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;
}
};