您的位置:首页 > 其它

leetcode - Restore IP Addresses

2016-03-02 14:19 381 查看
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:
std::vector<std::string> restoreIpAddresses(std::string s) {
std::vector<std::string> res;
if(s.size() < 4 || s.size() > 12) return res;
dfs(s,1,"",res);
#if 1
for (int i = 0; i < res.size(); i++)
{
std::cout << res[i] << std::endl;
}
#endif // 1

return res;
}
private:
void dfs(std::string s,int n, std::string ip,std::vector<std::string> &res)
{
if(s.size() == 0) return;
if(n == 4 && isValid(s))
{
ip += s;
res.push_back(ip);
return;
}
for (int i = 1; i <= 3; i++)
{
if(i > s.size()) break;
std::string t = s.substr(0,i);
if(isValid(t))
{
std::string tmp = s.substr(i);
dfs(tmp,n+1,ip+t+".",res);
}
}
}
bool isValid(std::string s)
{
if(s.size() == 0 || (s.size() > 1 && s[0] == '0')) return false;
int n = std::atoi(s.c_str());
if(0 <= n && n <= 255) return true;
return false;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: