LeetCode刷题-93. 复原IP地址
题目链接:93. 复原IP地址
¶题解:
带有剪枝的搜索,挺有意思!
¶题目简述:
给定一串数字,需要将其可以转化为的IP
地址返回!
¶题解:
暴力搜索DFS:void dfs(string s, int u, int k, string path)
u
:当前搜索到的位置k
:当前搜索的点的个数path
:当前状态下的IP地址
思路:
- 对于前导
0
的处理,即012
,IP地址没有前导0的,这个已经见过很多次了,直接i > u && s[u] == '0'
即可判断! - 然后搜索下一位时保证下一位在
0 ~ 255
范围即为合法数字,否则直接return
- 下一个数的搜索要从上一个数的后一位开始,即
i = u
开始
终止条件:
u == s.size()
:即搜到了字符串末尾- 剪枝优化:
u < s.size() && k == 4
:即没有搜到最后,已经够了四个点
答案: u == s.size() && k == 4
:即恰好组成一组IP地址,此时将该IP地址path
最后的小数点去掉,即为答案
时间复杂度:一共n
位,n - 1
个空隙可插入点,即从n - 1
个空隙三个点,即时间复杂度为:Cn-13
¶AC代码:
¶AC代码:
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小牛博客!
评论