Given a string containing only digits, restore it by returning all possible valid IP address combinations.
Example
Given
"25525511135"
, return[
"255.255.11.135",
"255.255.111.35"
]
Order does not matter.
class Solution { public: vector<string> helper(string s, int n) { int l = s.length(); vector<string> res; if(3*n < l || n>l) { return res; } if(n == 1){ if(l>1 && s[0] == '0') return res; if(stoi(s)<=255) { res.push_back(s); } return res; } for(int i=1;i<=3 && i<l;i++){ string t = s.substr(0,i); if((i>1 && s[0] == '0') || (i == 3 && stoi(t)>255)) break; vector<string> pp = helper(s.substr(i), n-1); for(auto e:pp) { res.push_back(t+"."+e); } } return res; } vector<string> restoreIpAddresses(string& s) { // Write your code here return helper(s, 4); } };