暴力尝试1个字符2个字符3个字符
class Solution {
public:
vector<string> ans;
void dfs(string &s, int index, int num, string tmp) {
if ((5 - num) * 3 < (int)s.size() - index) return;
if (num == 5) {
ans.push_back(tmp);
return;
}
if (s[index] == '0')
dfs(s, index + 1, num + 1, tmp + (num == 1 ? "0" : ".0"));
else {
for (int i = 1; i<4 && i + index <= s.size(); ++i)
if (i<3 || string(s, index, i)<="255") dfs(s, index + i, num + 1, tmp + (num == 1 ? "" : ".") + (i == 0 ? "0" : string(s, index, i)));
}
}
vector<string> restoreIpAddresses(string s) {
dfs(s, 0, 1, "");
return ans;
}
};