Date:2019-5-11
题目地址: https://leetcode-cn.com/problems/restore-ip-addresses/comments/

题目:

给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。
示例:
输入:

“25525511135”

输出:

["255.255.11.135", "255.255.111.35"]

解题:

  1. const restoreIpAddresses = (s) => {
  2. let res = []
  3. const findIps = (cur, sub) => {
  4. console.log(cur, s)
  5. // ip 每个最多 3 位, 由 4 个数字组成
  6. if (sub.length > 12) {
  7. return
  8. }
  9. // cur 的长度是4 ,并且cur与传入的值完全相同的时候,res进行赋值
  10. if (cur.length === 4 && cur.join('') === s) {
  11. res.push(cur.join('.'))
  12. } else {
  13. for (let i = 0, len = Math.min(3 ,sub.length), tmp; i < len; i++) {
  14. // 最小每三个一组 拆分 每个数字,让他们全部任意组合,然后递归去判断是否要插入到 res 内
  15. tmp = sub.substring(0, i + 1)
  16. if (256 - tmp > 0) {
  17. findIps(cur.concat([tmp*1]), sub.substring(i + 1))
  18. }
  19. }
  20. }
  21. }
  22. // 执行递归
  23. findIps([], s)
  24. return res
  25. }

我们在何时会用到该方法:

解决后端返回纯字符串而我们需要智能去匹配数组的时候的格式转换