题目链接
思路:
1.首先读懂题目,ip 地址需要满足的条件是 没有前导0,并不超过 255
- 接下来我们就只需要把 这三个点,模拟的放入到 这个字符串中,会生成四个数字,这四个数字都需要满足上面这个条件,在这三个点分布的时候,我们还需要考虑到,这个点和点之间的距离,不能超过3
代码:
javascript
/**
* @param {string} s
* @return {string[]}
*/
var restoreIpAddresses = function (s) {
let res = []
function isIp(num) {
if (parseInt(num) > 255) {
return false
}
if (num.length > 1 && num[0] === '0') return false
return true
}
if (s.length < 4 || s.length > 16) return []
// 分布三个点,最后排查哪个ip地址不可用
for (let i = 1; i < s.length && i <= 3; i++) {
for (let j = i + 1; j < s.length && j <= i + 3; j++) {
for (let k = j + 1; k < s.length && k <= j + 3; k++) {
let [a, b, c, d] = [s.substring(0, i), s.substring(i, j), s.substring(j, k), s.substring(k)]
if (isIp(a) && isIp(b) && isIp(c) && isIp(d)) {
res.push(a + '.' + b + '.' + c + '.' + d)
}
}
}
}
return res
};