【LeetCode】93.复原IP地址
题意:有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。
例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “192.168@1.1” 是 无效 IP 地址。
给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 ‘.’ 来形成。你 不能 重新排序或删除 s 中的任何数字。你可以按 任何 顺序返回答案。
思路:用回溯的思路,依次判断在哪里插入点号,有3个点即出口。检查切分出的区间内,是0xx、xxxx、大于255小于0、有非数字符号直接退出。
代码:
class Solution {
public:
vector<string> m_res;
// s[left, right]
bool isValid(string s, int left, int right)
{
if (left > right || right - left > 3)
{
return false;
}
if ('0' == s[left] && left != right)
{
return false;
}
int num = 0;
for (int i = left; i <= right; ++i)
{
if (!isdigit(s[i]))
{
return false;
}
num = num * 10 + s[i] - '0';
if (0 > num |