lintcode-426-恢复IP地址
426-恢复IP地址
给一个由数字组成的字符串。求出其可能恢复为的所有IP地址。
样例
给出字符串 "25525511135",所有可能的IP地址为:
[
"255.255.11.135",
"255.255.111.35"
]
(顺序无关紧要)标签
回溯法 递归 字符串处理
思路
使用递归+回溯,需要注意的是合法 ip 的判断,即:
- 每一节的数组均在 0 到 255 之间,包含 0 和 255
- 001,01 均是不合法的,但 0 ,10,100合法
- 共有4节,不多不少
code
class Solution {
public:
/*
* @param s: the IP string
* @return: All possible valid IP addresses
*/
vector<string> restoreIpAddresses(string s) {
// write your code here
if (s.size() < 4 || s.size() > 12) {
return vector<string>();
}
vector<string> result;
vector<string> temp;
restoreIpAddresses(s, result, temp, 0);
return result;
}
void restoreIpAddresses(string s, vector<string> &result, vector<string> &temp, int start) {
if (temp.size() == 4 && start == s.size()) {
result.push_back(temp[0] + "." + temp[1] + "." + temp[2] + "." + temp[3]);
return;
}
else if (temp.size() == 4 && start != s.size()) {
return;
}
for (int i = start; i < s.size() && i < start + 3; i++) {
if (isValid(s.substr(start, i - start + 1))) {
temp.push_back(s.substr(start, i - start + 1));
restoreIpAddresses(s, result, temp, i + 1);
temp.pop_back();
}
}
}
bool isValid(string s) {
if (s[0] == '0') {
return s == "0";
}
int digit = atoi(s.c_str());
return digit >= 0 && digit <= 255;
}
};
lintcode-426-恢复IP地址的更多相关文章
- lintcode:恢复IP地址
恢复IP地址 给一个由数字组成的字符串.求出其可能恢复为的所有IP地址. 样例 给出字符串 "25525511135",所有可能的IP地址为: [ "255.255.11 ...
- 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用作某个服 ...
随机推荐
- Redis 之复制-初入江湖
一.前言 在分布式系统中,为了解决单点问题,通常会把数据复制多个副本部署到其他机器,满足故障恢复合负载均衡等需求.Redis也是如此,它为我们提供了复制的功能,实现了相同数据的多个Redis副本.复制 ...
- 数据采集与分析的那些事——从数据埋点到AB测试
作者:网易有数郑栋. 一.为什么企业需要一套完善的用户行为埋点和分析平台 产品初创期间,需要分析天使用户的行为来改进产品,甚至从用户行为中得到新的思路或发现来调整产品方向:产品成长过程,通过对用户行为 ...
- Python学习:16.Python面对对象(三、反射,构造方法,静态字段,静态方法)
一.构造方法 在使用类创建对象的时候(就是类后面加括号)就自动执行__init__方法. class A: def __init__(self): print('A') class B: def __ ...
- PyQt5 signal and slot
PyQt5 的 signal 与 slot 有所改变,例如,先定义一个 ZeroSignal 类: class ZeroSignal(QObject): atzero = pyqtSignal(int ...
- Opencv3.0-python: 编译报错color.cpp:7456: error: (-215) scn == 3 || scn == 4 的解决方案
结合Opencv3.0读取视频时,出现报错:C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:11111: error: ( ...
- 20155204 实验3《敏捷开发与XP实践》实验报告
20155204 实验3<敏捷开发与XP实践>实验报告 一.实验内容与步骤 1.研究IDEA的code菜单. 老师给的任务的是把一串代码格式化,这个任务很简单.code菜单主要是关于编辑代 ...
- 20155235 《Java程序设计》 实验四 Android开发基础
20155235 <Java程序设计> 实验四 Android开发基础 实验要求 基于Android Studio开发简单的Android应用并部署测试; 了解Android组件.布局管理 ...
- 20155318 2016-2017-2 《Java程序设计》第四周学习总结
20155318 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 一.继承 1.父类:为了改进代码,可以将多个代码中相同的部分提升为父类,其他类只需用exte ...
- 一个奇怪的JS函数
今天在分析一个jQuery插件源码的时候,发现了一个奇怪的函数. 这个函数的目的是为数字补零,如传入7,输出07,传入12输出12.由于是对时间补零,只截取后两位. // add leading ze ...
- P/Invoke Interop Assistant工具C到C#自动转换
C#互操作的类型基本位于System.Runtime.InteropServices命名空间下,本系列随笔主要记录本人在开发过程中使用的到一些类型函数.技巧及工具 计算类型的大小 int size = ...