68人阅读 评论(0)

Given a string containing only digits, restore it by returning all possible valid IP address combinations.

For example:
Given "25525511135",

return ["255.255.11.135", "255.255.111.35"]. (Order does not matter)

class Solution {
public:
vector<string>result;
if(str.empty())
return result;
string tmpIP;
getAllIP(result, str, tmpIP, 0, 0);
return result;
}
void getAllIP(vector<string>& result, string str, string tmpIP, int k, int i)
{
int len = str.length();
if(i>4)
return;
if(k == len)
{
if(i==4)
{
tmpIP.pop_back();//去掉最后一个'.'
result.push_back(tmpIP);
}
return;
}
string tmp;
tmp += str[k];
if(getvalue(tmp)<=255)
{
tmpIP += (tmp+'.');
getAllIP(result, str, tmpIP,k+1 ,i+1);
tmpIP.pop_back();
tmpIP.pop_back();
}
if(str[k] != '0')
{
if(k < len-1)
{
tmp += str[k+1];
if(getvalue(tmp)<=255)
{
tmpIP += (tmp+'.');
getAllIP(result, str, tmpIP, k+2, i+1);
tmpIP.pop_back();
tmpIP.pop_back();
tmpIP.pop_back();
}
}
if(k < len-2)
{
tmp += str[k+2];
if(getvalue(tmp)<=255)
{
tmpIP += (tmp+'.');
getAllIP(result, str, tmpIP, k+3 ,i+1);
tmpIP.pop_back();
tmpIP.pop_back();
tmpIP.pop_back();
tmpIP.pop_back();
}
}
}
}
int getvalue(string s)
{
int len = s.length();
int result = 0;
for(int i=0; i<len; ++i)
result = 10*result + s[i]-'0';
return result;
}
};

0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：5066次
• 积分：289
• 等级：
• 排名：千里之外
• 原创：23篇
• 转载：4篇
• 译文：0篇
• 评论：0条
文章分类
评论排行