当前位置: 首页> 教育> 培训 > 个人网页主页_浙江大境软装设计_今日新闻最新消息_河南今日重大新闻

个人网页主页_浙江大境软装设计_今日新闻最新消息_河南今日重大新闻

时间:2025/8/6 0:29:38来源:https://blog.csdn.net/yl_puyu/article/details/145973659 浏览次数:0次
个人网页主页_浙江大境软装设计_今日新闻最新消息_河南今日重大新闻

文章目录

    • 1. 题目来源
    • 前置题目:
    • 2. 题目解析

1. 题目来源

链接:93. 复原 IP 地址

前置题目:

题单:

  • 待补充

2. 题目解析

一道经典的 dfs 问题,但是有很多可以剪枝的地方需要注意。具体的见代码注释即可。

主要思想和 子集 啥的,差不多,就是在两个字符之间填 “.” 进去做分割。看看能填几段,或者将此题理解成将字符串分成 4 段,判断是否构成合法 IP 也行。


  • 时间复杂度 O ( 2 n ) O(2^n) O(2n)
  • 空间复杂度 O ( n ) O(n) O(n)

func restoreIpAddresses(s string) []string {n := len(s)res := []string{}path := []string{}var dfs func(int)dfs = func(u int) {if len(path) > 4 {  // path 多于 4,则直接 return return}if u == n && len(path) == 4 {s := path[0]for i := 1; i < len(path); i ++ {s += "."s += path[i]                }if ip := net.ParseIP(s); ip != nil {res = append(res, s)}return}for i := u; i < len(s); i ++ {if s[u] == '0' && i - u > 1 {   // 2位及以上时,必须 无前缀 0return }if i + 1 - u > 3 {   // 必须是 1-3 位return}path = append(path, s[u:i+1])dfs(i + 1)path = path[:len(path) - 1]}}dfs(0)return res
}
关键字:个人网页主页_浙江大境软装设计_今日新闻最新消息_河南今日重大新闻

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: