# 93 复原 IP 地址

# 题目链接

# 难度:中等

# 思路分析:

编程题,递归

#

#

#

#

#

#

#

#

#

#

#

#

#

#

# 代码:

递归

var restoreIpAddresses = function(s) {
  if (s.length > 12) return [];
  let result = [];
  fn(s, [], result);
  return result;
};
// 递归
function fn(remain, temp, result) {
  // 第四段
  if (temp.length === 3) {
    if (regular(remain)) {
      // 合法即为正确的值
      result.push([...temp, remain].join("."));
    }
    return;
  }
  // 每段长度都可能为1/2/3
  for (let i = 1; i < 4; i++) {
    // 合法才可继续
    if (regular(remain.substr(0, i))) {
      const strArr = [...temp, remain.substr(0, i)]; // 字符段
      const str = remain.substr(i); // 剩下的字符串
      fn(str, strArr, result);
    }
  }
}
// 验证合法性
function regular(s) {
  if (!s.length) return false;
  return 0 <= +s && +s <= 255 && (s.length > 1 ? !!+s[0] : true);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

# 鼓励我一下:

觉得还不错的话,给我的项目点个star

# 点个Star支持我一下~

最后更新时间: 7/2/2020, 4:27:35 PM