题目:
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