您的位置:首页 > 其它

Restore IP Addresses

2014-04-24 03:29 246 查看
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)

Solution: DFS.

class Solution {
public:
vector<string> restoreIpAddresses(string s) {
vector<string> res;
string ip;
restoreIpAddressRe(s, res, ip, 0, 0);
return res;
}

void restoreIpAddressRe(string &s, vector<string> &res, string &ip, int deep, int start)
{
if (deep == 4 && start == s.size())
res.push_back(ip);
if (deep == 4) return;

int num = 0, origSize = ip.size();
if (origSize != 0) ip.push_back('.');
for (int i = start; i < s.size(); ++i)
{
num = num * 10 + s[i] - '0';
if (num > 255) break;
ip.push_back(s[i]);
restoreIpAddressRe(s, res, ip, deep + 1, i + 1);
if (num == 0) break;
}
ip.resize(origSize);
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: