lintcode:恢复IP地址
恢复IP地址
给一个由数字组成的字符串。求出其可能恢复为的所有IP地址。
给出字符串 "25525511135",所有可能的IP地址为:
[
"255.255.11.135",
"255.255.111.35"
]
(顺序无关紧要)
解题
深度优先遍历
注意:
1.中间IP位置不能以0开始,0.01.01.1非法,应该是0.0.101.1或者0.0.10.11
2.数不能大于255
public class Solution {
/**
* @param s the IP string
* @return All possible valid IP addresses
* 不能包括01 001这样的格式
*/
public ArrayList<String> restoreIpAddresses(String s) {
// Write your code here
ArrayList<String> list = new ArrayList<String>();
String IP="";
int start = 0;
int IPsize = 0;
dfs(list,IP,s,start,IPsize);
return list;
}
public void dfs(ArrayList<String> list,String IP,String s,int start,int IPsize){
if(start == s.length()||IPsize>=4)
return;
if(IPsize == 3){
String subIP = s.substring(start);
if(isStartZero(subIP))
return;
if(!isLegal(subIP))
return;
IP+="." + subIP;
if(!list.contains(IP))
list.add(IP);
return;
}else{
for(int i = start;i<s.length();i++){
int j = 1;
while(start+j<s.length() && j<=4){
String subIP = s.substring(start,start+j);
if(isStartZero(subIP))
break;
if(!isLegal(subIP))
break;
if(IPsize == 0){
IP+=subIP;
IPsize++;
dfs(list,IP,s,start+j,IPsize);
IP = "";
}else{
IP+="." + subIP;
IPsize++;
dfs(list,IP,s,start+j,IPsize);
IP = IP.substring(0,IP.length() - j-1);
}
IPsize--;
j++;
}
}
}
}
public boolean isLegal(String subIP){
Long numIP = Long.valueOf(subIP);
if(numIP< 0 || numIP>255)
return false;
return true;
}
public boolean isStartZero(String subIP){
if(subIP.substring(0,1).equals("0") && subIP.length() >=2)
return true;
return false;
}
}
lintcode:恢复IP地址的更多相关文章
- lintcode - 恢复ip地址
class Solution { public: /* * @param s: the IP string * @return: All possible valid IP addresses */ ...
- lintcode-【中等】恢复IP地址
题目 给一个由数字组成的字符串.求出其可能恢复为的所有IP地址.链接. 样例 给出字符串 "25525511135",所有可能的IP地址为: [ "255.255.11. ...
- 恢复所有情况的ip地址
在终端下输入一串ip字符串如:19219219211,ip地址可能是19.219.219.211.192.19.219.211.192.192.19.211和192.192.192.11. 以下是本人 ...
- Linux网络管理1---(Linux配置IP地址,ifconfig、配置文件)
1.Linux配置IP 地址 ifconfig命令临时配置IP 地址 ifconfig命令,最常用的功能是查看本机的网络的配置状态(当然也可以配置网络,不过是暂时性的),直接输入ifconfig命令就 ...
- 【linux】虚拟机安装centos后ping ip地址出现错误:Network is unreachable
来源:https://my.oschina.net/stonezing/blog/515480 方案一: 进入/etc/sysconfig/network-scripts/ 查看这下面的文件 每个人的 ...
- IP地址更改小工具(bat命令)
为了方便切换IP地址,特编制bat命令代码来实现,将以下代码复制到txt文本中,然后保存为bat文件,双击bat文件运行即可. 通过bat命令运行,自动修改IP地址,代码如下: @echo off c ...
- IP地址漂移的实现与原理
当前备份软件比较流行,其中用到的关键技术是IP 地址漂移, 实际上IP地址漂移技术是利用共享的“虚拟”IP地址,当本地进行节点切换与路由切换,使另一端的发送和收方端没有感觉到本地节点地址有变化,保证了 ...
- 转:数据包经由路由转发时源、目的IP地址及MAC地址变化情况
数据包经由路由转发时源.目的IP地址及MAC地址变化情况. IP数据包经由路由转发的时候源ip,目的ip,源MAC,目的mac是否发生改变,如何改变? A—–(B1-B2)—–(C1-C2)—— ...
- openstack私有云布署实践【19 通过python客户端 创建实例VM指定IP地址】
还有一种创建方式 是使用py开发工具,调用openstackclient的方法进行创建实例 ,好处就是可随意指定我们要的虚拟机IP地址,需求的场景就是,某天我们需要主动分配一个比较熟知的IP用作某个服 ...
随机推荐
- c/c++常用代码 -- ini文件操作
#pragma once #include <string> #include <sstream> typedef std::basic_string<TCHAR> ...
- C++异常机制知识点
在这里总结一下,C++中的异常机制,以及如何使用异常的知识点 C++中处理异常的过程是这样的:在执行程序发生异常,可以不在本函数中处理,而是抛出一个错误信息,把它传递给上一级的函数来解决,上一级解决 ...
- 团队开发——第一篇scrum报告
一.角色介绍 产品负责人(兼项目经理PM):王雪青 scrum master: 陆宇 开发团队:赵建松.张文冬.徐擎天 二.product backlog 1.买家登录后,显示各个小吃摊的信息,主要是 ...
- 我教女朋友学编程html系列(7)—Html无序列表、自定义列表、有序列表及常用例子
昨天写的那篇文章<我教女朋友学编程Html系列(6)—Html常用表单控件>,基本上有1000人左右看了,那边文章是我站在前人的肩膀上修改来的,添加了截图和说明,合并了例子,使之更容易被初 ...
- 圆形DIV
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" ...
- 01.安装Memcached
1.安装Memcached 1.下载Memcached及其依赖 下载memcached-1.4.24.tar.gz和libevent-2.0.22-stable.tar.gz文件并解压如下: [liz ...
- C++ Templates之模板元编程
#ifndef POW3_H #define POW3_H template <int N> class Pow3 { public: enum{result = 3 * Pow3< ...
- Matlab计算矩阵和函数梯度
一.差分与微分 我自己的理解. 二.求解 2.1 矩阵 这就是matlab的计算结果.太小的话放大些: c = 4 5 9 7 2 1 5 2 6 >> [x,y]=gradient(c) ...
- Leetcode#61 Rotate List
原题地址 我一直不太理解为什么叫rotate,翻译成"旋转"吧,似乎也不像啊.比如: 1->2->3->4->5->NULL 向右旋转2的距离,变成了 ...
- [百度空间] [原]跨平台编程注意事项(二): windows下 x86到x64的移植
之前转的: 将程序移植到64位Windows 还有自己乱写的一篇: 跨平台编程注意事项(一) 之前对于x64平台的移植都是纸上谈兵,算是前期准备工作, 但起码在写代码时,已经非常注意了.所以现在移植起 ...