leecode/backlog/93.restore-ip-addresses.js

35 lines
867 B
JavaScript
Raw Normal View History

2020-05-22 18:17:19 +08:00
/*
* @lc app=leetcode id=93 lang=javascript
*
* [93] Restore IP Addresses
*/
function backtrack(list, tempList, s, start) {
if (tempList.length === 4 && tempList.join("") === s && !list.includes(tempList.join("."))) {
list.push(tempList.join("."));
}
if (tempList.length > 4) return;
for (let i = start; i < s.length; i++) {
for (let j = 0; j < 3; j++) {
const r = s.slice(i, i + j + 1);
if (+r > 255) continue;
if (r[0] === '0' && r.length > 1) continue;
tempList.push(r);
backtrack(list, tempList, s, i + j + 1);
tempList.pop();
}
}
}
/**
* @param {string} s
* @return {string[]}
*/
var restoreIpAddresses = function(s) {
// Given "25525511135",
// return ["255.255.11.135", "255.255.111.35"].
if (s.length > 3 * 4) return [];
const list = [];
backtrack(list, [], s, 0);
return list;
};