93. 复原 IP 地址
思路:就枚举三个点在哪三个位置插入,然后找到符合要求的四个数,组成字符串即可。
class Solution {
public:
vector<string> restoreIpAddresses(string s) {
vector<string> v;
int lens=s.size();
for(int i=1;i<lens&&i<=3;i++){
int a=0;
if(s[0]=='0'&&i!=1) continue;
for(int z=0;z<i;z++){
a=a*10+s[z]-'0';
}
if(a>255) continue;
for(int j=i+1;j<lens&&j-i<=3;j++){
int b=0;
if(s[i]=='0'&&j!=i+1) continue;
for(int z=i;z<j;z++){
b=b*10+s[z]-'0';
}
if(b>255) continue;
for(int k=j+1;k<lens&&k-j<=3;k++){
int c=0;
if(s[j]=='0'&&k!=j+1) continue;
for(int z=j;z<k;z++){
c=c*10+s[z]-'0';
}
if(c>255) continue;
if(lens-k>3) continue;
int d=0;
if(s[k]=='0'&&k!=lens-1) continue;
for(int z=k;z<lens;z++){
d=d*10+s[z]-'0';
}
if(d>255) continue;
string tmp="";
tmp=to_string(a)+"."+to_string(b)+"."+to_string(c)+"."+to_string(d);
v.push_back(tmp);
}
}
}
return v;
}
};