let result = [];
function search(cur, sub){
// 当字符串大于12时肯定不能生成一个合法的IP地址
if(sub.length > 12){
return;
}
// 当当前数组中元素为4且拼接起来恰好需要处理的字符串,则将其加入result数组
if(cur.length === 4 && cur.join('') === s){
result.push(cur.join('.'));
} else {
// 否则,分别取出代码前1、2、3位进行递归处理
// 由于剩余的字符串长度不一定大于等于3,所以对于长度还需要进行最小值的判断
for(let i=0,length=Math.min(3, sub.length);i<length; i++){
let temp = sub.slice(0, i+1);
// 若数值大于255,则不可能形成合法IP地址
if(parseInt(temp) < 256){
// 分割出的字符串若长度大于1,则第一位不允许为0
if(temp.length > 1 && temp[0] === '0'){
continue;
}
search(cur.concat([temp]), sub.slice(i+1));
}
}
}
}
search([], s);
return result;