1class Solution {2public:3vector<string> res;4void dfs(string s, int idx, string curr_ip, int cnt) {5if (cnt > 4) return;6if (cnt == 4 && idx == s.size()) {7res.push_back(curr_ip);8// return;9}10for (int i = 1; i < 4; i++) {11if (idx + i > s.size()) break;12string str = s.substr(idx, i);13if ((str[0] == '0' && str.size() > 1) || (i == 3 && stoi(str) >= 256)) continue;14dfs(s, idx + i, curr_ip + str + (cnt == 3 ? "" : "."), cnt + 1);15}16}17vector<string> restoreIpAddresses(string s) {18dfs(s, 0, "", 0);19return res;20}21};