Given a string containing only digits, restore it by returning all possible valid IP address combinations.
Example:
Input: "25525511135"
Output: ["255.255.11.135", "255.255.111.35"]
AC code:
class Solution { public: vector<string> restoreIpAddresses(string s) { vector<string> res; helper(0, s, res, "", 0); return res; } void helper(int count, string s, vector<string>& res, string ret, int index) { if (count > 4) return; if (count == 4 && index == s.length()) res.push_back(ret); for (int i = 1; i < 4; i++) { if (index+i > s.length()) break; string temp = s.substr(index, i); if(temp[0] == '0' && temp.length() > 1 || atoi(temp.c_str()) > 255) continue; string next = ret + temp; helper(count+1, s, res, next+(count == 3 ? "" : "."), index+i); } } };
Runtime: 4 ms, faster than 23.68% of C++ online submissions for Restore IP Addresses.