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 ...
随机推荐
- php实现简单消息发送+极光推送系统
前几天刚写完的一个东西,写的比较简单,没有使用其他插件,原生php+计划任务实现 极光推送的代码 /* $receiver="registration_id" : [ " ...
- [No0000CD]shell 中的单行注释和多行注释
1. 单行注释 众所周知,# 比如想要注释:echo “ni” # echo "ni" 2. 多行注释 法一: : << ! 语句1 语句2 语句3 语句4 ! 例如 ...
- [knowledge][linux][sysfs] sysfs文件系统
https://en.wikipedia.org/wiki/Sysfs http://man7.org/linux/man-pages/man5/sysfs.5.html https://www.ke ...
- 转:HashMap实现原理分析(面试问题:两个hashcode相同 的对象怎么存入hashmap的)
原文地址:https://www.cnblogs.com/faunjoe88/p/7992319.html 主要内容: 1)put 疑问:如果两个key通过hash%Entry[].length得 ...
- python_flask 注册,登陆,退出思路 ---纯个人观点
1注册逻辑首先查询数据库用户名 并判断用户是否存在,如不存在就插入数据 并返回响应给前端2前端模板获取注册信息 判断 用户名不能为空及密码不能为空,和密码不一致 拼接注册url 组成get获取对象 响 ...
- pandas基础运算
重新索引 (1)reindex重新索引,在已有的索引基础上新建索引,fill_value可以指定新建索引默认值 (2)#新建索引,如果新建的索引值为空自动填充之前的值 对于DataFrame重新索引同 ...
- 洛谷P3354 Riv河流 [IOI2005] 树型dp
正解:树型dp 解题报告: 传送门! 简要题意:有棵树,每个节点有个权值w,要求选k个节点,最大化∑dis*w,其中如果某个节点到根的路径上选了别的节点,dis指的是到达那个节点的距离 首先这个一看就 ...
- TensorFlow设置GPU占用量
默认开启Tensorflow的session之后,就会占用几乎所有的显存,进行如下设置即可: 指定GPU编号: import os os.environ["CUDA_VISIBLE_DEVI ...
- 常用的shell脚本(安全方向)
更多shell脚本参考:https://blog.51cto.com/zero01/2046242 1.拒绝密码撞库攻击的ip shell脚本:实现对登录主机失败10次以上的ip进行拒绝登录 #! / ...
- Python3学习之路~0 目录
目录 Python3学习之路~2.1 列表.元组操作 Python3学习之路~2.2 简单的购物车程序 Python3学习之路~2.3 字符串操作 Python3学习之路~2.4 字典操作 Pytho ...