leetcode 93 复原IP地址
IP地址,分成四段,每段是0-255,按照每段的长度分别为1,2,3下一段长度分别1,2,3再下一段。。。。。。进行递归遍历,能满足条件的假如res中。比较难想到的就是假如有一段是三位的010是不符合要求的。这点一开始没想到,改成首尾不是0的才执行结果又漏掉了单个0的IP地址,比如0.0.0.0.。除了这两点之外剩下的代码还算好想。
#include<bits/stdc++.h>
using namespace std;
class Solution {
private:
void getIP(string s,int x,int y,vector<string>&res,string &ans,int sum)//[x,x+y-1]前闭后闭从string s的第x位开始获取y位数字组成IP地址。
{
int n;
n = s.size();
int i;
if (x + y -> n - ||sum>)
return;
if (( - sum) * + x + y- < n - )//如果剩下的几次都取3个数字都取不完所有元素,那么返回。
return;
if (y == )
{
if ( * (s[x] - '') + * (s[x + ] - '') + (s[x + ] - '') > )
return;
}
if (s[x] - '' == &&y!=)
return;
for (i = x; i <= x + y-; i++)
{
ans.push_back(s[i]);
if (i == x + y-&&sum!=)
ans.push_back('.');
}
if (x + y- == n - &&sum==)//第三次取完了所有string s里面的元素,保存结果.
{
res.push_back(ans);
for (i = ; i < y; i++)//回溯
{
ans.pop_back();
}
return;
}
// if(y+2<=n-1)
getIP(s,x+y , ,res,ans,sum+);
// if(y+3<=n-1)
getIP(s, x+y , ,res,ans,sum+);
// if(y+4<=n-1)
getIP(s, x+y, ,res,ans,sum+);
ans.pop_back();
for (i = ; i < y; i++)
ans.pop_back();
return;
}
public:
vector<string> restoreIpAddresses(string s) {
int n = s.size();
vector<string>res;
string ans;
ans.clear();
getIP(s, , , res, ans, );
ans.clear();
getIP(s, , , res, ans, );
ans.clear();
getIP(s, , , res, ans, );
return res;
}
};
leetcode 93 复原IP地址的更多相关文章
- Java实现 LeetCode 93 复原IP地址
93. 复原IP地址 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 示例: 输入: "25525511135" 输出: ["255.255.11. ...
- LeetCode 93. 复原IP地址(Restore IP Addresses)
题目描述 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 示例: 输入: "25525511135" 输出: ["255.255.11.135&qu ...
- LeetCode:复原IP地址【93】
LeetCode:复原IP地址[93] 题目描述 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 示例: 输入: "25525511135" 输出: [&qu ...
- leetcode刷题-93复原IP地址
题目 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 '.' 分隔. 示例: 输入: &q ...
- Leetcode 93.复制IP地址
复制IP地址 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 示例: 输入: "25525511135" 输出: ["255.255.11.135& ...
- 93复原IP地址。
from typing import List# 这道题不是很难,但是限制条件有很多.# 用递归的方法可以很容易的想到.只需要四层递归就好了.# 每次进行加上限制条件.过滤每一层就好了..class ...
- 93. 复原 IP 地址
做题思路or感想 这种字符串切割的问题都可以用回溯法来解决 递归三部曲: 递归参数 因为要切割字符串,所以要用一个startIndex来控制子串的开头位置,即是会切割出一个范围是[startIndex ...
- 93. 复原IP地址
题目描述: 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 示例: 输入: "25525511135" 输出: ["255.255.11.135&q ...
- [LeetCode] Restore IP Addresses 复原IP地址
Given a string containing only digits, restore it by returning all possible valid IP address combina ...
随机推荐
- VBS数组导入Excel
<script language="vbscript"> dim arr(9999,4) for i=0 to 9999 for j = 0 to 4 arr(i,j) ...
- 2016年蓝桥杯省赛A组c++第4题(算法填空)
/* 排序在各种场合经常被用到. 快速排序是十分常用的高效率的算法. 其思想是:先选一个“标尺”, 用它把整个队列过一遍筛子, 以保证:其左边的元素都不大于它,其右边的元素都不小于它. 这样,排序问题 ...
- goreplay,tcpcopy
流量拷贝工具试用 https://github.com/buger/goreplaynginx mirror openresty 通过lua tcpcopy 支持 HTTP 请求的录制和重放,可以在线 ...
- Monkey简介及环境搭建(1)
简介:Monkey是Android SDK自带的测试工具,是一个命令行工具,可以运行在模拟器中或者实际设备中,它向系统发送伪随机的用户事件流(如按键输入,触摸屏输入,手势输入等),实现对正在开发的应用 ...
- 不看好运维竖井产品模式,优云打造融合化运维PaaS平台
2018年1月13号中国双态运维用户大会上,优云软件总裁刘东海接受了36Kr记者的专访,期间谈到了新时代下的企业运维模式,新兴技术和传统运维的融合以及优云未来的发展方向等问题.以下为访谈实录: 优云软 ...
- linux常用查看文件或日志命令
常见查看文件内容命令汇总如下: cat filename 查看日志,会打开整个文件,直接跑到最后面 tac filename 查看日志,会打开整 ...
- GIt如何安装使用
一:公式git服务器地址:192.168.1.16 . 采用https协议,建议大家编辑本机hosts文件,将此地址映射到域名git.penseesoft.com,已防止出现的SSL证书警告. Hos ...
- MySQL innodb_flush_method 【转载】
innodb_flush_method这个参数控制着innodb数据文件及redo log的打开.刷写模式,对于这个参数,文档上是这样描述的: 有三个值:fdatasync(默认),O_DSYNC,O ...
- OC动画CABasicAnimation
//1.创建动画 CABasicAnimation *anima=[CABasicAnimation animationWithKeyPath:@"bounds"]; //1.1设 ...
- Vagrant测试
载新的BOX实现虚拟机恢复.效果如下:(可用linux命令操作,但是很多时候我们还是需要图形化界面,不然不利于开发代码编写) 参考PDF中的记录网址http://www.vagrantbox.es/ ...