IP地址怎么凑出来的?聊聊回溯法这点“小心思”
我们都知道,IP 地址是网络通信的门牌号。IPv4 的地址长这样:192.168.0.1
,四段,每段是 0 到 255 的数字,由三个点分隔。
那你有没有想过一个算法问题——如果我给你一个纯数字的字符串,比如 25525511135
,你能不能帮我找出所有合法的 IP 地址组合?
别笑,LeetCode 真就有这么一道题叫:
93. 复原 IP 地址(Restore IP Addresses)
一开始我看这题,脑袋有点懵,觉得有点暴力。后来一想,暴力也得讲章法对吧?这不,老朋友“回溯法”就出场了。
今天我们就聊聊这道题,也聊聊回溯算法那点绕不过去的“套路”。
一、问题本质:把一个字符串拆成4段合法的 IP 段
我们来看看,什么叫“合法 IP 地址”:
- 由 4 段组成,段与段之间用
.</