思路
- 长度为12位:最小单元位3
- 长度为11位:最小单元位2
- 其他情况的最小单元位有可能是1
ts代码
function restoreIpAddresses(s: string): string[] { // 保存所有符合条件的IP地址 let r: any[] = [] // 分四步递归处理ip分段 let search = (cur: any, sub: any) => { if (sub.length > 12) return // 边界条件 if (cur.length === 4 && cur.join('') === s) { r.push(cur.join('.')) } else { // 正常的处理过程 for (let i = 0, len = Math.min(3, sub.length), tmp; i < len; i++) { tmp = sub.substr(0, i + 1) if (tmp - 256 < 0) { // 转换下数据类型,如 01为1(LeetCode测试用例) search(cur.concat([tmp * 1]), sub.substr(i + 1)) } } } } search([], s) return r}console.log(restoreIpAddresses('101023'))