递归 - 复原IP地址

export default (str) => {
  // 保存所有符合条件的IP地址
  let r = []
  // 分四步递归处理ip分段
  let search = (cur, sub) => {
    // 非法输入过滤,LeetCode测试用例(111111111111111111111111111111111111111111111111111111111111)
    if (sub.length > 12) {
      return
    }
    // 边界条件
    if (cur.length === 4 && cur.join('') === str) {
      r.push(cur.join('.'))
    } else {
      // 正常的处理过程
      for (let i = 0, len = Math.min(3, sub.length), tmp; i < len; i++) {
        tmp = sub.substr(0, i + 1)
        if (tmp - 256 < 0) {
          // 转换下数据类型,如 01为1(LeetCode测试用例)
          search(cur.concat([tmp * 1]), sub.substr(i + 1))
        }
      }
    }
  }
  search([], str)
 
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • EmilWong阅读 322评论 0 0
  • 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。 示例: 输入: "25525511135"输...
    小白学编程阅读 2,120评论 0 1
  • 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。 示例: 输入: "25525511135"输...
    薄荷糖的味道_fb40阅读 406评论 0 0
  • 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。 示例: 代码
    vbuer阅读 523评论 0 0
  • 拾起破碎时光, 如同褶皱纸张, 滑过我心房, 蔓延出痕迹。 一步步跌落的, 无法触摸的, 是梦, 是霜, 是离人泪...
    浅草木阅读 232评论 0 1