#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;
}
};