https://leetcode.com/problems/restore-ip-addresses/
1. Use recursion:
//4 ms 6.7 MBclass Solution {public:vector<string> restoreIpAddresses(string s) {vector<string> result;//pickSub(result, s, "", 4);pickSub(&result, s, "", 4);return result;}//void pickSub(vector<string>& result, string s, string curr, int rest){void pickSub(vector<string>* result, string s, string curr, int rest){if(s.length() > rest*3)return;if(rest!=0 && rest!=4)curr += ".";if(rest == 0){//result.push_back(curr);result->push_back(curr);return;}string s_l;string s_r;for(int i=1; i<=3; i++){if(s.length()>=i){s_l = s.substr(0, i);if(s.length()>=i+1)s_r = s.substr(i);elses_r = "";if((stoi(s_l) <= 255)&& ((stoi(s_l) > 0 && (s_l[0] != '0'))|| (stoi(s_l) == 0) && (s_l == "0"))){pickSub(result, s_r, curr + s_l, rest-1);}}}}};
