#include <string> #include <vector> class Solution { public: vector<string> restoreIpAddresses(string s) { // write code here int n = s.size(); vector<string> ans; string temp; //首先利用三个for找到分割点,同时进行判断 for(int i = 1; i <= n - 3; i ++){ for(int j = i + 1; j <= n - 2; j++){ for(int k = j + 1; k <= n - 1; k++){ string ip1 = s.substr(0, i); if(stoi(ip1) > 255 || (ip1.size() != 1 &&ip1[0] == '0')) continue; string ip2 = s.substr(i, j - i ); if(stoi(ip2) > 255 || (ip2.size() != 1 &&ip2[0] == '0')) continue; string ip3 = s.substr(j, k - j); if(stoi(ip3) > 255 || (ip3.size() != 1 && ip3[0] == '0')) continue; string ip4 = s.substr(k); if(stoi(ip4) > 255 || (ip4.size() != 1 &&ip4[0] == '0')) continue; temp = ip1 + '.' + ip2 + '.' + ip3 + '.' + ip4; ans.push_back(temp); } } } return ans; } };