#include <string> #include <vector> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return string字符串vector */ vector<string> restoreIpAddresses(string s) { // 方法1,进行枚举 //首先判断特殊情况 if(s.size() < 4) return {}; //其次建立保存字符串数组的容器 vector<string> ans; int n = s.size(); //遍历 for(int a = 1; a <= 3 && a <= n-3; a++ ){//截取第一个数 for(int b = a + 1; b <= a + 3 && b <= n -2 ; b ++){//截取第二个数 for(int c = b + 1; c <= b + 3 && c <= n - 1; c++ ){//截取第三个数 if(n - c > 3 ) continue; //最后一个数字若是长度大于3,则跳过本次循环 //截取字符串 string ip1 = s.substr(0, a); string ip2 = s.substr(a, b - a); string ip3 = s.substr(b , c - b); string ip4 = s.substr(c ); //判断每个字符串数字的合法性 if(stoi(ip1) > 255|| stoi(ip2) > 255 || stoi(ip3) > 255 || stoi(ip4) > 255) continue; //判断四个字符串中是否有前缀0,如果有以上两种情况都跳过本次循环 if((ip1.size() > 1 && ip1[0] == '0')||ip2.size() > 1 && ip2[0] == '0'||ip3.size() > 1 && ip3[0] == '0'||ip4.size() > 1 && ip4[0] == '0') continue; //将四个字符串进行拼接,加入逗点,最后push进字符串容器中 string temp = ip1 + "." + ip2 + "." + ip3 + "." + ip4; ans.push_back(temp); } } } return ans; } };