题目:
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)
分析:
代码:
class Solution {
public:
vector<string> res;
vector<string> restoreIpAddresses(string s) {
if(0<=s.length()&&s[0]=='0')dfs(s.substr(0, 1), s.substr(1), 1);
else {
for (int i = 1; i <= s.length() && i < 4; ++i)
if (atoi((s.substr(0, i)).c_str()) < 256)
dfs(s.substr(0, i), s.substr(i), 1);
}
return res;
}
void dfs(string t, string s, int now) {
if (now == 4 && s.empty())res.push_back(t);
if (s.empty() || now>4)return;
if (0 <= s.length() && s[0] == '0')dfs((t + '.') + s.substr(0, 1), s.substr(1), now+1);
else {
for (int i = 1; i < 4 && i <= s.length(); ++i)
if (atoi((s.substr(0, i)).c_str()) < 256) {
dfs((t + '.') + s.substr(0, i), s.substr(i), now + 1);
}
}
}
};