您的位置:首页 > 其它

Restore IP Addresses

2014-04-13 13:07 274 查看
class Solution {
public:
vector<string> restoreIpAddresses(string s) {
//先给个暴力解
vector<string> ret;
if(s.length()<4 || s.length()>12) return ret;
int len=s.length();
string a,b,c,d;
int a_len,b_len,c_len,d_len;

for(a_len=1;a_len<=3;a_len++)
{
if(len-a_len < 3|| len-a_len >9)
{
continue;
}
a.insert(a.end(),s.begin(),s.begin()+a_len);
if((a_len>=2 && a[0]=='0') || (a_len ==3 && atoi(a.c_str()) >255))
{
a.clear();
continue;
}
for(b_len =1;b_len<=3;b_len++)
{
if(len-a_len-b_len < 2 || len-a_len-b_len>6)
{
continue;
}
b.insert(b.end(),s.begin()+a_len,s.begin()+a_len+b_len);
if((b_len>=2 && b[0]=='0') || (b_len ==3 && atoi(b.c_str()) >255))
{
b.clear();
continue;
}
for(c_len =1;c_len<=3;c_len++)
{
if(len-a_len-b_len-c_len < 1 || len-a_len-b_len-c_len > 3)
{
continue;
}
c.insert(c.end(),s.begin()+a_len+b_len,s.begin()+a_len+b_len+c_len);
if((c_len>=2 && c[0]=='0') || (c_len ==3 && atoi(c.c_str()) >255))
{
c.clear();
continue;
}
d_len=len-a_len-b_len-c_len;
if(d_len<1 || d_len>3)
{
continue;
}
d.insert(d.end(),s.begin()+a_len+b_len+c_len,s.begin()+a_len+b_len+c_len+d_len);
if((d_len>=2 && d[0]=='0') || (d_len==3 && atoi(d.c_str())>255))
{
c.clear();
d.clear();
continue;
}
string unit;
unit+=a;
unit.push_back('.');
unit+=b;
unit.push_back('.');
unit+=c;
unit.push_back('.');
unit+=d;
ret.push_back(unit);
c.clear(),d.clear();
}
b.clear();
}
a.clear();
}
return ret;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  穷举