Date:2019-5-11
题目地址: https://leetcode-cn.com/problems/restore-ip-addresses/comments/
题目:
给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。
示例:
输入:
“25525511135”
输出:
["255.255.11.135", "255.255.111.35"]
解题:
const restoreIpAddresses = (s) => {let res = []const findIps = (cur, sub) => {console.log(cur, s)// ip 每个最多 3 位, 由 4 个数字组成if (sub.length > 12) {return}// cur 的长度是4 ,并且cur与传入的值完全相同的时候,res进行赋值if (cur.length === 4 && cur.join('') === s) {res.push(cur.join('.'))} else {for (let i = 0, len = Math.min(3 ,sub.length), tmp; i < len; i++) {// 最小每三个一组 拆分 每个数字,让他们全部任意组合,然后递归去判断是否要插入到 res 内tmp = sub.substring(0, i + 1)if (256 - tmp > 0) {findIps(cur.concat([tmp*1]), sub.substring(i + 1))}}}}// 执行递归findIps([], s)return res}
我们在何时会用到该方法:
解决后端返回纯字符串而我们需要智能去匹配数组的时候的格式转换
