# 093.RestoreIPAddresses
// https://leetcode-cn.com/problems/restore-ip-addresses/
/**
* @param {string} s
* @return {string[]}
*/
var restoreIpAddresses = function (s) {
var ans = [];
var len = s.length;
var findPart = function (index, pre, partIndex) {
if (partIndex === 3) {
if (isValidPart(s.slice(index))) {
pre.push(s.slice(index));
ans.push(pre.join('.'));
}
} else {
if (isValidPart(s.slice(index, index + 3))) {
var num = s.slice(index, index + 3);
findPart(index + 3, pre.concat([num]), partIndex + 1);
}
if (isValidPart(s.slice(index, index + 2))) {
var num = s.slice(index, index + 2);
findPart(index + 2, pre.concat([num]), partIndex + 1);
}
if (isValidPart(s.slice(index, index + 1))) {
var num = s.slice(index, index + 1);
findPart(index + 1, pre.concat([num]), partIndex + 1);
}
}
}
findPart(0, [], 0);
return ans;
};
var isValidPart = function (s) {
var num = Number(s);
if (!s) {
return false;
} else if (Number(s).toString().length !== s.length) {
return false;
} else if (num < 0 || num > 255) {
return false;
}
return true;
}