思路
用一个vector存放可能的结果,然后用一个变量判断插入点的数量,假设再最后一段后也插入点
代码
class Solution {
public:vector<string> result;vector<string> path;int toNum(string s){int d = 1;int result = 0;for(int i = s.size()-1; i >= 0; i--){result += ( (char)s[i] - '0' ) * d;d *= 10;}return result;}void backTracking(string s, int startIndex, int dotNum){if(startIndex == s.size() && dotNum == 4){string ip;for(int i = 0; i < path.size(); i++){ip += path[i];if(i != path.size() - 1) ip += ".";}result.push_back(ip);return;}string num_string; for(int i = startIndex; i < s.size(); i++){num_string += s[i];int num = toNum(num_string);if(to_string(num) != num_string) break; if(num > 255) break;path.push_back(to_string(num));backTracking(s, i+1, dotNum+1);path.pop_back();}return;}vector<string> restoreIpAddresses(string s) {backTracking(s, 0, 0);return result;}
};