力扣算法题—093复原IP地址
给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。
示例:
输入: "25525511135"
输出:["255.255.11.135", "255.255.111.35"]
//暴力搜索
//一共分为4组
//每组数据不超过三位
class Solution {
public:
vector<string> restoreIpAddresses(string s) {
vector<string>res;
for(int a = ; a<;++a)
for(int b=;b<;++b)
for(int c =;c<;++c)
for(int d=;d<;++d)
if (a + b + c + d == s.size()) {
int A = stoi(s.substr(, a));//取子串并转为数组
int B = stoi(s.substr(a, b));
int C = stoi(s.substr(a+b, c));
int D = stoi(s.substr(a+b+c, d));
if (A <= && B <= && C <= && D <= ) {
string str = to_string(A) + "." + to_string(B) + "." + to_string(C) + "." + to_string(D);
if (str.size() == (s.size() + ))//去除010这种组合
res.push_back(str);
}
}
return res; }
}; //使用递归
class Solution {
public:
vector<string> restoreIpAddresses(string s) {
vector<string>res;
helper(s, , "",res);
return res;
}
void helper(string s, int n, string out, vector<string>&res) {
if (n == ) {
if (s.empty())res.push_back(out);//全部组合4组IP完毕
}
else {
for (int k = ; k < ; ++k) {
if (s.size() < k)break;
int val = stoi(s.substr(, k));//取子串转化为数字
if (val > || k != to_string(val).size())//当数字大于255或出现010,不满足
continue;
helper(s.substr(k), n + , out + s.substr(, k) + (n == ? "" : "."), res);
}
}
}
};
力扣算法题—093复原IP地址的更多相关文章
- 第93题:复原IP地址
一. 问题描述 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 示例: 输入: "25525511135" 输出: ["255.255.11.135 ...
- leetcode刷题-93复原IP地址
题目 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 '.' 分隔. 示例: 输入: &q ...
- 力扣算法题—069x的平方根
实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: 4 输出: 2 示例 ...
- 力扣算法题—060第K个排列
给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列. 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: "123" "132&qu ...
- 力扣算法题—050计算pow(x, n)
#include "000库函数.h" //使用折半算法 牛逼算法 class Solution { public: double myPow(double x, int n) { ...
- 力扣算法题—147Insertion_Sort_List
Sort a linked list using insertion sort. A graphical example of insertion sort. The partial sorted l ...
- 力扣算法题—460LFU缓存
[题目描述] 设计并实现最不经常使用(LFU)缓存的数据结构.它应该支持以下操作:get 和 put. get(key) - 如果键存在于缓存中,则获取键的值(总是正数),否则返回 -1. put(k ...
- 力扣算法题—079单词搜索【DFS】
给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格.同一个单元格内的字母不允许被重复使用. ...
- 力扣算法题—052N皇后问题2
跟前面的N皇后问题没区别,还更简单 #include "000库函数.h" //使用回溯法 class Solution { public: int totalNQueens(in ...
随机推荐
- 2019-01-29 VS Code创建自定义Python代码片段
续前文[日常]Beyond的歌里最多是"唏嘘"吗? - Python分词+词频最后的想法, 发现VS Code支持用户自定义代码片段: Creating your own snip ...
- 【jframe】Java架构师之路 - 第01篇:Get Started
jframe是什么? jframe是一个基于MIT协议开源的java web应用程序框架,汇聚了我们团队之于java web应用程序的核心架构思想以及大量最佳实践,并且持续在实际项目中不断完善优化. ...
- 使用WSL吧
WSL(Windows Subsystem for Linux)已经装在电脑上好一阵子了,谁如果还没装的,可以看看本文,至少知道个大概,觉得有用的话知道该如何做. 简介 WSL简单说就是一个能让你在W ...
- 深入理解this关键字
Java提供了一个this关键字,this关键字总是指向调用该方法的对象.根据this出现的位置的不同,this作为对象的默认引用有两种情形. 1)构造器中引用该构造器正在初始化的对象. 2)在方法中 ...
- SQL 高级查询(层次化查询,递归)
SQL 高级查询 前面我们写了一下 SQL 的极简入门,今天来说点高级查询.没看到的朋友可以点击下面链接查看. 1 小时 SQL 极速入门(一) 1 小时 SQL 极速入门(二) 1 小时 SQL 极 ...
- 搭建属于自己的GIT服务器——pingg
1.下载并安装jdk. 下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htm ...
- jenkins 自动化部署实战
jenkins 作为一个自动化的集成工具,已经是必不可少的了.它里面提供各种插件,以及完备的基础流程设施,为大家的自动化集成之路提供了很多的方便.所以,我们有必要完整的实践一回.以切身体会到它的好处! ...
- Docker 导出&加载镜像
文章首发自个人网站:https://www.exception.site/docker/docker-save-load-image 本文中,您将学习 Docker 如何导出&加载镜像.当我们 ...
- 使用JDBC连接操作数据库
JDBC简介 Java数据库连接(Java Database Connectivity,JDBC),是一种用于执行SQL语句的Java API,它由一组用Java编程语言编写的类和接口组成. JDBC ...
- LindDotNetCore~Aspect面向方面编程
回到目录 Aspect面向方面编程 面向侧面的程序设计(aspect-oriented programming,AOP,又译作面向方面的程序设计.观点导向编程.剖面导向程序设计)是计算机科学中的一个术 ...