定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。
有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 ‘.’ 分隔。
示例:
示例:
输入: “25525511135”
输出: [“255.255.11.135”, “255.255.111.35”]
class Solution {
public:
bool goodNum(string &temp)
{
if(temp.size()>1&&temp[0]=='0')//如果是01.不行
return false;
if(stoi(temp)>255)//将字符串转换成int
return false;
return true;
}
void dfs(string &s,string &sub,int loc,int n,vector<string>&res)
{
if(loc>=s.size())
return;
for(int i=1;i<=3;i++)
{ string num_s=s.substr(loc,i);//两种方法都可
//string temp=sub+"."+s.substr(loc,i);//位置loc开始,剪切i位
string temp=sub+"."+num_s;//位置loc开始,剪切i位
//string num_s=s.substr(loc,i);
if(!goodNum(num_s))
continue;
if(loc+i<s.size() && n<3)
dfs(s,temp,loc+i,n+1,res);
else if(loc+i==s.size() && n==3)
{
res.push_back(temp);
return;
}
}
}
vector<string> restoreIpAddresses(string s)
{ vector<string>res;
if(s.size()<=0||s.size()>12)
return res;
string temp;
for(int i=1;i<=3;i++)
{
temp=s.substr(0,i);
if(!goodNum(temp))
continue;
dfs(s,temp,i,1,res);
}
return res;
}
};