function restoreIpAddresses(s) {
if (s.length > 12) return []
let result = []
fn(s, [], result)
return result
};
function fn(remain, temp, result) {
if (temp.length === 3) {
regular(remain) && result.push([...temp, remain].join('.'))
return
}
for (let i = 1; i < 4; i++) {
regular(remain.substr(0, i)) && fn(remain.substr(i), [...temp, remain.substr(0, i)], result)
}
}
/**
* @desc 用来判断每一段是否合法
* @param {string} s
* @return {boolean}
*/
function regular(s) {
if (!s.length) return false
return 0 <= +s && +s <= 255 && (s.length > 1 ? !!+s[0] : true)
}
console.log(restoreIpAddresses('25525511135'))
console.log(restoreIpAddresses('0000'))
console.log(restoreIpAddresses('101023'))