给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。
示例:
输入: "25525511135"
输出: ["255.255.11.135", "255.255.111.35"]
class Solution {
public:
vector<string> restoreIpAddresses(string &s, int count, int iBegin)
{
int len = s.length();
vector<string> ret;
for (int i = iBegin; i < iBegin + 3; i++)
{
if (count == 0 && i != len - 1) continue;
if ((len - i - 1) > (count * 3)) continue;
if ((len - i - 1) < (count * 1)) continue;
string sub = s.substr(iBegin, i - iBegin + 1);
int ip = stoi(sub);
if (ip < 0 || ip > 255) continue;
if (to_string(ip) != sub) break;
if (count == 0)
{
ret.push_back(sub);
}
vector<string> vs = restoreIpAddresses(s, count - 1, i + 1);
for (auto &v : vs)
{
ret.push_back(sub + "." + v);
}
}
return ret;
}
vector<string> restoreIpAddresses(string s)
{
return restoreIpAddresses(s, 3, 0);
}
};