class Solution {
public:
/**
*
* @param s string字符串
* @return string字符串vector
*/
vector<string> restoreIpAddresses(string s) {
// write code here
vector<string> ans;
function<void(string, string, int, int)> dfs = [&](string ip, string cur, int point, int idx) {
if (idx == s.length()) {
if (point == 3) ans.push_back(ip);
return;
}
for (int i = idx; i < s.length(); i++) {
cur += s[i];
if (stoi(cur) >= 256) return;
if (cur.length() > 1 and cur[0] == '0') return;
if (i + 1 == s.length()) {
dfs(ip + cur, "", point, i + 1);
} else {
dfs(ip + cur + '.', "", point + 1, i + 1);
}
}
};
dfs("", "", 0, 0);
return ans;
}
};