原题链接
typescript
function restoreIpAddresses(s: string): string[] {
if(s.length > 12) {
return [];
}
const result = [];
const dfs = (path: string[], remainStr: string) => {
if(path.length === 4 && path.join("") === s) {
result.push(path.join("."));
return;
}
const maxSubLen = Math.min(remainStr.length, 3) + 1;
for(let i = 1; i < maxSubLen; i++) {
const subStr = remainStr.substr(0, i);
const num = parseInt(subStr, 10);
if(num <= 255 && num >= 0) {
// 每次向下传递一个新数组
dfs(path.concat(num.toString()), remainStr.substr(i));
}
}
}
dfs([], s);
return result;
};