Restore IP Addresses
Given a string containing only digits, restore it by returning all possible valid IP address combinations.
For example:
Given "25525511135"
,
return ["255.255.11.135", "255.255.111.35"]
. (Order does not matter)
dfs遍历所有分割,注意边界条件
代码:
class Solution {
public:
void dfs (string s, vector<string>&ans,string &path,int cnt,int begin)
{
int len=s.size();
if (cnt==4 &&begin==len)
{
int pathlen=path.size();
ans.push_back(path.substr(0,pathlen-1));
return ;
}
if (cnt==4)
return ;
for (int i=1; i<4; i++)
{
if ((begin+i)>s.size())
break;
string temp=s.substr(begin,i);
if (temp.size()!=1&&temp[0]=='0') continue;
int tt=atoi(temp.c_str());
if (tt>255) continue;
temp+='.';
string ttt=path;
path+=temp;
dfs(s,ans,path,cnt+1,begin+i);
path=ttt;
}
return ;
}
vector<string> restoreIpAddresses(string s) {
vector<string>ans;
string path;
dfs(s,ans,path,0,0);
return ans;
}
};