【一天一道LeetCode】#93. Restore IP Addresses
一天一道LeetCode
本系列文章已全部上传至我的github,地址:ZeeCoder‘s Github
欢迎大家关注我的新浪微博,我的新浪微博
欢迎转载,转载请注明出处
(一)题目
Given a string containing only digits, restore it by returning all possible valid IP address combinations.
For example:
Given “25525511135”,return [“255.255.11.135”, “255.255.111.35”]. (Order does not matter)
(二)解题
题目大意:给定一串字符,判断可以组成多少个有效的ip地址
解题过程中需要注意无效ip,诸如00,010等
解题思路:采用回溯法,ip有四级,分别判断每一级是否为有效的,依次递归,到最后判断能不能组成有效ip,没有就回溯到上一级继续递归。详细思路见代码注释
class Solution {
public:
vector<string> restoreIpAddresses(string s) {
vector<string> ret;
string ip;
dfsRestoreIp(s,ip,0,0,ret);
return ret;
}
void dfsRestoreIp(string& s , string ip , int count , int i ,vector<string>&ret)
{
if(count==4)//计数到4后表示一个ip地址
{
if(i==s.length()) {
ip.erase(ip.end()-1);//去除最后的'.'
ret.push_back(ip);
}
return;
}
int num = 0;
for(int j = i ; j < s.length() ; j++)
{
ip+=s[j];
num = num*10+(s[j]-'0');
if(num>0&&s[i]=='0') return;//去除诸如‘01’,‘010’等无效ip
if(num==0&&j-i>=1) return;//去除诸如'00'等无效ip
if(num<256)
{
ip+='.';//加上.代表到下一级
dfsRestoreIp(s,ip,count+1,j+1,ret);
ip.erase(ip.end()-1);//回溯到上一级
}
else return;
}
}
};
【一天一道LeetCode】#93. Restore IP Addresses的更多相关文章
- leetcode 93. Restore IP Addresses(DFS, 模拟)
题目链接 leetcode 93. Restore IP Addresses 题意 给定一段序列,判断可能组成ip数的所有可能集合 思路 可以采用模拟或者DFS的想法,把总的ip数分成四段,每段判断是 ...
- [LeetCode] 93. Restore IP Addresses 复原IP地址
Given a string containing only digits, restore it by returning all possible valid IP address combina ...
- LeetCode : 93. Restore IP Addresses
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABZ4AAAHUCAYAAAC6Zj2HAAAMFGlDQ1BJQ0MgUHJvZmlsZQAASImVlw
- leetcode 93 Restore IP Addresses ----- java
Given a string containing only digits, restore it by returning all possible valid IP address combina ...
- 93.Restore IP Addresses(M)
93.Restore IP Addresses Medium 617237FavoriteShare Given a string containing only digits, restore it ...
- 【LeetCode】93. Restore IP Addresses
Restore IP Addresses Given a string containing only digits, restore it by returning all possible val ...
- 93. Restore IP Addresses
题目: Given a string containing only digits, restore it by returning all possible valid IP address com ...
- 【leetcode】Restore IP Addresses
Restore IP Addresses Given a string containing only digits, restore it by returning all possible val ...
- 【LeetCode】93. Restore IP Addresses 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 回溯法 日期 题目地址:https://leetco ...
随机推荐
- Create database 创建数据库
首先在ORACLE用户下进入.bash_profile文件 [oracle@linux02 ~]$ vi .bash_profile export ORACLE_SID=hldbexport ORAC ...
- pentaho cde 自定义复选下拉框 checkbox select
pentaho 自带的component 虽多,但是当用户需要在一个表格中查看多个组别的数据时,pentaho自带的单选框就不能实现了,所以复选下拉框势在必行,实现效果如下: 实现原理是借用了jqu ...
- VMWare 虚拟机 共享文件夹
1.不能拷贝和直接拖拽文件至虚拟机系统中 解决办法: 通过共享文件夹的方式进行文件共享. (Win7 32位 10.0版本的虚拟机). ①:选择虚拟机 虚拟机 → 设置 如下图: ②: ...
- iOS支付宝,微信,银联支付集成封装调用(下)
一.越来越多的app增加第三方的功能,可能app有不同的页面但调用相同的支付方式,例如界面如下: 这两个页面都会使用第三方支付支付:(微信,支付宝,银联)如果在每一个页面都直接调用第三方支付的接口全部 ...
- swing JTable
JTable 实例 import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayo ...
- 部署 Helm - 每天5分钟玩转 Docker 容器技术(162)
本节我们将安装和部署 Helm 客户端和 Tiller 服务器. Helm 客户端 通常,我们将 Helm 客户端安装在能够执行 kubectl 命令的节点上,只需要下面一条命令: curl http ...
- Bootstrap3 栅格系统-实例:流式布局容器
如何让小屏幕设备上所有列不堆叠在一起,使用针对超小屏幕和中等屏幕设备所定义的类就可以做到,即 .col-xs-* 和 .col-md-*.举例: <!-- Stack the columns o ...
- Python 文本转语音
文本转语音,一般会用在无障碍开发.下面介绍如何使用Python实现将文本文件转换成语音输出. 准备 使用Speech API 原理 示例代码 小总结 pyttsx方式 原理 示例代码 小总结 pytt ...
- [ExtJS5学习笔记]第三十三节 sencha extjs 5 grid表格导出excel
使用extjs肯定少不了使用表格控件,用到表格,领导们(一般)还是惯于使用excel看数据,所以用到extjs表格的技术猿们肯定也会有导出表格excel这一个需求,本文主要针对如何在用extjs将gr ...
- Servlet - Upload、Download、Async、动态注册
Servlet 标签 : Java与Web Upload-上传 随着3.0版本的发布,文件上传终于成为Servlet规范的一项内置特性,不再依赖于像Commons FileUpload之类组件,因此在 ...