题意
题解
搜索 I P IP IP 地址的 3 3 3 个 ′ . ′ '.' ′.′ 位置,判断合法性即可。
class Solution
{
public:
int n;
vector<string> res;
bool judge(string &s, int l, int r)
{
if (l < r && s[l] == '0')
{
return 0;
}
int m = 0;
for (int i = l; i <= r; i++)
{
m = m * 10 + s[i] - '0';
}
return m <= 255;
}
void dfs(string &s, string tmp, int p, int cnt)
{
if (cnt == 0)
{
if (judge(s, p, n - 1))
{
tmp += s.substr(p);
res.push_back(tmp);
}
return;
}
int l = max(p, n - 3 * cnt - 1), r = min(p + 3, n - cnt);
for (int i = l; i < r; i++)
{
if (judge(s, p, i))
{
dfs(s, tmp + s.substr(p, i - p + 1) + '.', i + 1, cnt - 1);
}
}
}
vector<string> restoreIpAddresses(string s)
{
n = s.length();
dfs(s, "", 0, 3);
return res;
}
};