给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。

有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 ‘.’ 分隔。

示例:

1
2
输入: "25525511135"
输出: ["255.255.11.135", "255.255.111.35"]
参考解答
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
/**
* @param {string} s
* @return {string[]}
*/
var restoreIpAddresses = function(s) {
const res = []

/**
* cur 当前
* sub 剩余字符串
*/
const search = (cur, sub) => {
// 超出范围
if (sub.length > 12) {
return res
} else if (cur.length === 4 && cur.join('') === s) {
res.push(cur.join('.'))
} else {
// ip位最长只有三位
const len = Math.min(3, sub.length)
for (let i = 0; i < len; i++) {
const tmp = sub.substr(0, i + 1)
if (tmp < 256 && Number(tmp).toString() === tmp) {
search([ ...cur, tmp ], sub.substr(i + 1))
}
}
}
}
search([], s)
return res
};
解决思路

递归