#include <string> #include <vector> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return string字符串vector */ vector<string> restoreIpAddresses(string s) { // write code here vector<string> ans; int len = s.size(); if(len>12) return ans; // i是第一个数字段结尾下标 for(int i=0; i+3<len && i<3; ++i) { int s_1 = stoi(s.substr(0,i+1)); // 如果该字符段长度大于1,但是首字符为'0',说明有可能是前缀为0的情况,如 "01","010"; if((i+1>1 && s[0]=='0') || (s_1>255)) break; // j是第二个数字段结尾下标 for(int j=i+1; j+2<len && j<6; ++j) { int s_2 = stoi(s.substr(i+1,j-i)); if((j-i>1 && s[i+1]=='0') || (s_2>255)) break; // n是第三个数字段结尾下标 for(int n=j+1; n+1<len && n<9; ++n) { int s_3 = stoi(s.substr(j+1,n-j)); if((n-j>1 && s[j+1]=='0') || (s_3>255)) break; // 第四个数字段结尾下标是len-1 int s_4 = stoi(s.substr(n+1,len-1-n)); if((len-1-n>1 && s[n+1]=='0') || (s_4>255)) continue; string str = to_string(s_1) + "." + to_string(s_2) + "." + to_string(s_3) + "." + to_string(s_4); ans.emplace_back(str); } } } return ans; } };