Lq93:复原 IP 地址
创始人
2024-03-26 15:58:12

有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。

  • 例如:"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址,但是 "0.011.255.245""192.168.1.312" 和 "192.168@1.1" 是 无效 IP 地址。

给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 '.' 来形成。你 不能 重新排序或删除 s 中的任何数字。你可以按 任何 顺序返回答案。

 思路:

  • 以 "25525511135" 为例,第一步时我们有几种选择?
    1. 选 "2" 作为第一个片段
    2. 选 "25" 作为第一个片段
    3. 选 "255" 作为第一个片段
  • 能切三种不同的长度,切第二个片段时,又面临三种选择。
  • 这会向下分支,形成一棵树,我们用 DFS 去遍历所有选择,必要时提前回溯。
    因为某一步的选择可能是错的,得不到正确的结果,不要往下做了。撤销最后一个选择,回到选择前的状态,去试另一个选择。

回溯的要点:约束 

约束条件限制了当前的选项,题中ip的格式就是约束条件:

  1. 一个片段的长度是1-3
  2. 片段的值的范围是0-255
  3. 不能是0X、0XX这种形式

用这些约束来进行充分的剪枝,去掉一些选择,避免搜索一不会产生正确答案的分支。 

回溯的目标 

  • 目标决定了什么时候捕获答案,什么时候砍掉死支,回溯。
  • 目标是生成 4 个有效片段,并且要耗尽 IP 的字符。
  • 当条件满足时,说明生成了一个有效组合,加入解集,结束当前递归,继续探索别的分支。
  • 如果满4个有效片段,但没耗尽字符,不是想要的解,不继续往下递归,提前回溯。

定义dfs函数

  • dfs 函数传什么?也就是,用什么描述一个节点的状态?
  • 选择切出一个片段后,继续递归剩余子串。可以传子串,也可以传指针,加上当前的片段数组,描述节点的状态。
  • dfs 函数做的事:复原从 start 到末尾的子串。
/*** IP全排列组合问题*/
class IPSolution
{List res;List temp;//temp用于将原字符串截取分成四段public List restoreIpAddresses(String s){int n = s.length();res = new ArrayList<>();temp = new ArrayList<>();if(n<=3 || n>=13){return res;}dfs(s,0);return res;}public void dfs(String s,int begin){if(begin==s.length() && temp.size()==4){String str=temp.get(0);for(int i=1;i<4;i++){str=str+'.'+temp.get(i);}res.add(str);return;}if(begin=s.length()){return;}//剔除不合法的前导0if(len!=1 && s.charAt(begin)=='0'){return;}//截取字符串String st = s.substring(begin,begin+len);//截取的字符串长度为3时,大小不能超过255if(len==3 && Integer.parseInt(st)>255){return;}temp.add(st);dfs(s,begin+len);temp.remove(temp.size()-1);}}public static void main(String[] args) {String s = "25525511135";IPSolution ipSolution = new IPSolution();System.out.println(ipSolution.restoreIpAddresses(s));}
}

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...