题目:
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)
题意:
给定一个数字组成的字符串,原本是一个ip地址, 缺失了分割,求所有可能的ip地址分割。
每个分割的限制条件就是没有前置的零,所以用dfs去遍历寻找所有可能的情况。
dfs几个变量,dep存遍历的深度,len存遍历到string s中的位置,temp保存正在构造的符合条件的ip地址。
class Solution {
private:
vector<string> res;
public:
void dfs(int dep,int len,string s,string temp)
{
if(len>s.size())return ;
if(dep==4) {
if(len==s.size())
res.push_back(temp);
return ;
}
if(dep!=0)temp+='.';
dfs(dep+1,len+1,s,temp+s.substr(len,1));
if(s.substr(len, 2) >= "10" && s.substr(len, 2) <= "99")
dfs(dep+1,len+2,s,temp+s.substr(len,2));
if(s.substr(len, 3) >= "100" && s.substr(len, 3) <= "255")
dfs(dep+1,len+3,s,temp+s.substr(len,3));
}
vector<string> restoreIpAddresses(string s) {
res.clear();
dfs(0,0,s,"");
return res;
}
};
// blog.csdn.net/havenoidea