IP 地址划分

93. Restore IP Addresses(Medium)

Given "25525511135",
return ["255.255.11.135", "255.255.111.35"].

题目描述:

  根据所给的字符串,返回所有划分的合法IP地址。

思路分析:

  这道题其实就是一个深度优先遍历的过程。ip有4个段,每个段的字符个数可能是1,2,3,因此对每一段循环取1,2,3,然后标记当前对应的是ip段的哪个段,直到ip段已经分为4个段,并且取完了string这个时候取到一个合法的ip放入最后的结果中。对每次处理的时候如果按照每次取i个字符处理之后,调用递归取后面的段时,需要将前面取的i个字符去掉,因为如果这里取的满足条件那么后面一定已经存放到结果中。现在需要新起一个开头处理。

代码:

public List<String>restoreIpAddresses(String s){
List<String>res=new ArrayList<>();
if(s==null||s.length()==0)
return res;
StringBuilder str=new StringBuilder();
findIp(0,s,str,res);
return res;
}
public void findIp(int k,String s,StringBuilder str,List<String>res){
if(k==4||s.length()==0){
if(k==4&&s.length()==0)//分成了四段并且str没有剩余
res.add(str.toString());
return ;
}
for(int i=0;i<s.length()&&i<=2;i++){
if(i!=0&&s.charAt(0)=='0')
break; //该段的长度不为1,但是字符串首字母为0,那么不符合ip命名方式,直接退出,例如:01.100.22.33其地址应该为1.100.22.33
String part=s.substring(0,i+1);
if(Integer.valueOf(part)<=255){
if(str.length()!=0){//不是首段,则要加上段分隔符
part='.'+part;
}
str.append(part); //添加
findIp(k+1,s.substring(i+1),str,res); //k表示第几段
str.delete(str.length()-part.length(),str.length()); //删除
}
}
}

回溯---IP 地址划分的更多相关文章

  1. IP地址划分

    对于32位的IPV4地址来说,有5中IP地址类型 A类IP地址第一个字节是网络地址,后三个字节是主机地址,且最高位以0开头. 0000001  00000000   00000000 00000001 ...

  2. 应用层协议及ip地址划分

    1.应用层协议 2.ip地址 3.子网划分及超网合并

  3. [svc]ip地址划分

    网络界有2个计算题,一个是子网掩码,另一个就是三次握手,四次回收序列号计算了. 学会如何划分等长子网 学会如何合并网段 学会ip是否能分配 理解特殊的ip地址 ip头部 ip地址分类 现在的IP网络使 ...

  4. 3、IP地址划分

    划分子网方法:1.你所选择的子网掩码将会产生多少个子网?:2 的x 次方(x 代表被借走的主机位数)2.每个子网能有多少主机?: 2 的y 次方-2(y 代表被借走之后剩余的主机位数)3.块大小:bl ...

  5. 计算机网络网络层的IP地址划分及子码

    现在在网络层,即就是TCP/IP协议里的网际互联层,最流行IP协议的就是IPV4.其中IP地址的格式是由32位二进制数字表示的,通常为了人们阅读习惯,将其转换成点分十进制来表示,如:192.168.1 ...

  6. 【转】网络管理员必知之:IP地址划分

    1.IP地址分类         IP地址有四个段,包括网络标识和主机标识两部分:netid+hostid.         IP地址应用分为A.B.C三类,D.E类是保留和专用的.         ...

  7. IP地址及其子网划分

    说实话,弄到子网划分的时候还是及其头晕的,又是这又是那的,现在我们来讲解一下这些东西, 首先我们来介绍一下IP地址,要弄清子网划分,子网掩码首先还是要弄清IP地址的划分 IP地址是给Internet上 ...

  8. IP地址,子网掩码划分(转)

    IP地址划分教程 IP和子网掩码我们都知道,IP是由四段数字组成,在此,我们先来了解一下3类常用的IP A类IP段 0.0.0.0 到127.255.255.255 B类IP段 128.0.0.0 到 ...

  9. 网络基础之IP地址与子网划分

    IP地址 Ipv4地址格式:点分十进制 IP地址的分类 A类 B类 C类: D类:组播 E类: 公共IP地址 私有IP地址 特殊地址 保留地址 子网掩码 什么是子网掩码 CIDR表示法 子网划分 为啥 ...

随机推荐

  1. 【bzoj2002】弹飞绵羊

    题目 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系数k ...

  2. SQL Server性能调优--优化建议(一)

    序言 当数据量小的时候,SQL优化或许无关紧要,但是当数据量达到一定量级之后,性能优化将变得至关重要,甚至决定系统成败. 定位慢查询 查询编译以来cpu耗时总量最多的前50条 --查询编译以来 cpu ...

  3. JSP上传整个文件夹

    文件上传是最古老的互联网操作之一,20多年来几乎没有怎么变化,还是操作麻烦.缺乏交互.用户体验差. 一.前端代码 英国程序员Remy Sharp总结了这些新的接口 ,本文在他的基础之上,讨论在前端采用 ...

  4. Python_020(几个经典内置方法)

    一.内置方法 1.内置方法表示:__名字__ 几种名称: 1)双下方法 2)魔术方法 3)类中的特殊方法/内置方法 类中的每一个双下方法都有它自己的特殊意义;所有的双下方法没有 需要你在外部直接调用的 ...

  5. [CSP-S模拟测试]:寿司(暴力)

    题目描述 小$c$是一名$oier$.最近,他发现他的数据结构好像学傻了.因为他在刷题时碰到了一道傻逼数据结构题,强行使用了平衡树来解决,卡着时间$AC$.为此,他被狠狠地嘲讽了一番.于是,小$c$找 ...

  6. 大数据笔记(四)——操作HDFS

    一.Web Console:端口50070 二.HDFS的命令行操作 (一)普通操作命令 HDFS 操作命令帮助信息: hdfs dfs + Enter键 常见命令 1.  -mkdir 在HDFS上 ...

  7. SQL报错:ORA-00911:无效的字符错误

    转载自:https://blog.csdn.net/huangyanlong/article/details/38096469 *)ORA-00911:无效的字符错误——由编译环境下一个小错误引起.S ...

  8. fedora18 Cannot retrieve metalink for repository: fedora. Please verify its path and try again 解决方法

    Cannot retrieve metalink for repository: fedora. Please verify its path and try again 解决方法 执行如下命令: s ...

  9. React-Native 之 GD (十六)首页筛选功能

    1.首页筛选功能 GDCommunalSiftMenu.js /** * 筛选菜单 */ import React, { Component, PropTypes } from 'react'; im ...

  10. accomplish、complete、finish、achieve和fulfill

    accomplish to succeed in doing something, especially after trying very hard vt. 完成:实现:达到 complete us ...