代码训练营Day.28 | 93. 复原IP地址、78. 子集、90. 子集II

93. 复原IP地址

1. LeetCode链接

. - 力扣(LeetCode)

2. 题目描述

3. 解法

字符串切四刀,最后一刀必须是在末位。

麻烦的地方在于文本的各种限制条件、剪枝等等。

class Solution {
public:vector<string> results;string result;void backtracking(string& s, int start, int k) {if (start == s.size() && k == -1) {result.pop_back();results.push_back(result);result.push_back('.');return;}string ss;for (int i = start; i < s.size(); i++) {if (k == 0) { // 要是前三刀切完了,第四刀必须在末尾ss = s.substr(start, s.size() - start);i = s.size() - 1;}else ss = s.substr(start, i + 1 - start);if (ss[0] == '0' && ss.size() > 1) break; // 开头‘0’不合法,后面的也不用考虑if (ss.size() > 3) break; // size大于3,肯定>255,后面也不用考虑int num = stoi(ss);if (num > 255) break; // >255,后面也不用考虑了。result += ss;result.push_back('.');backtracking(s, i + 1, k - 1);result.erase(result.end() - ss.size() - 1, result.end());}return;}vector<string> restoreIpAddresses(string s) {backtracking(s, 0, 3);return results;}
};

该方法不太省空间。以下方法直接在s上操作,考虑将三个‘.’插在字符串的哪里。注意第三个点插在最后一位的情况。

class Solution {
public:vector<string> result;void backtracking(string& s, int pp, int start) {if (pp == 3) {if (isValid(s, start, s.size() - 1)) result.push_back(s);return;}for (int i = start; i < s.size(); i++) {if (isValid(s, start, i)) {s.insert(s.begin() + i + 1, '.');pp++;backtracking(s, pp, i + 2);pp--;s.erase(s.begin() + i + 1);} else break;}}bool isValid(string& s, int left, int right) {if (left > right) return false;  // 防止最后一位是‘.’if (s[left] == '0' && right > left) return false;if ((right - left) > 3) return false;int num = 0;for (int i = left; i <= right; i++) {if (s[i] > '9' || s[i] < '0') return false;num = num * 10 + (s[i] - '0');if (num > 255) return false;}return true;}vector<string> restoreIpAddresses(string s) {backtracking(s, 0, 0);return result;}
};

78. 子集

1. LeetCode链接

. - 力扣(LeetCode)

2. 题目描述

3. 解法

太简单了,就是组合但是不考虑长度,任何都能压入最终答案中。

class Solution {
public:vector<vector<int>> results;vector<int> result;void backtracking(vector<int>& nums, int start) {results.push_back(result);for (int i = start; i < nums.size(); i++) {result.push_back(nums[i]);backtracking(nums, i + 1);result.pop_back();}return;}vector<vector<int>> subsets(vector<int>& nums) {backtracking(nums, 0);return results;}
};

90. 子集II

1. LeetCode链接

90. 子集 II - 力扣(LeetCode)

2. 题目描述

3. 解法

有了重复元素,就不得不先排序了。

class Solution {
public:vector<vector<int>> results;vector<int> result;void backtracking(vector<int>& nums, int start) {results.push_back(result);for (int i = start; i < nums.size(); i++) {if (i > start && nums[i] == nums[i - 1]) continue;result.push_back(nums[i]);backtracking(nums, i + 1);result.pop_back();}return;}vector<vector<int>> subsetsWithDup(vector<int>& nums) {sort(nums.begin(), nums.end());backtracking(nums, 0);return results;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/608678.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最优化理论复习--最优性条件(二)

文章目录 上一篇约束极值问题的最优性条件基本概念一般情况的约束类型最优化条件 上一篇 最优化理论分析复习–最优性条件&#xff08;一&#xff09; 约束极值问题的最优性条件 基本概念 凸规划 m i n f ( x ) min f(x) minf(x) s . t . { g i ( x ) ≥ 0 &#xff0c; …

Android Matrix (二)具体图形变换参数的获取

Android Matrix &#xff08;二&#xff09;具体图形变换参数的获取 Matrix 类在 Android 中用于表示 3x3 的变换矩阵。这个矩阵可以应用于画布&#xff08;Canvas&#xff09;&#xff0c;视图&#xff08;View&#xff09;或者位图&#xff08;Bitmap&#xff09;&#xff0…

服务器日常维护要素,应该如何做好维护

维护服务器的目的是为了让服务器的性能保持最佳状态&#xff0c;发现问题及时解决&#xff0c;没有问题也可以对相关的应用和配置进行调优。但也有很多用户疑问&#xff0c;服务器具体会有哪些方面需要维护的&#xff0c;今天就一起来看看吧。 服务器日常维护&#xff0c;主要包…

Python基础入门第九课笔记(文件和文件夹)

1&#xff0c;新建文本并且写内容 a open(1.text,w) a.write("""aaa bbb ccc""") a.close() 2,seek( )移动文件指针 文件对象.seek(偏移量&#xff0c;起始位置) # 起始位置&#xff1a;0开头&#xff0c;1当前位置&#xff0c;2文件结尾…

7+坏死性凋亡+分型+预后模型+实验,筛坏死性凋亡相关基因并建模

今天给同学们分享一篇生信文章“MLKL and other necroptosis-related genes promote the tumor immune cell infiltration, guiding for the administration of immunotherapy in bladder urothelial carcinoma”&#xff0c;这篇文章发表在Apoptosis期刊上&#xff0c;影响因子…

【新华三】IPsec VPN 实验配置(地址固定)

【新华三】IPsec VPN 实验配置&#xff08;地址固定&#xff09; 注意实验需求配置思路配置命令拓扑R1基础配置配置第一阶段 IKE SA配置第二阶段 IPsec SA ISP_R2基础配置 R3基础配置配置第一阶段 IKE SA配置第二阶段 IPsec SA PCPC1PC2 检查建立成功查看命令清除IKE / IPsec S…

分享几个网盘资源搜索地址,总能找到你想要的

目录 [TOC](目录)一、前言二、地址分享三、结尾 一、前言 分享几个网盘搜索网站&#xff0c;总能找到你想要的。 二、地址分享 盘搜搜: https://pansoso.com/ 搜网盘: https://www.swangpan.com/ fastsoso: https://www.fastsoso.cc 猫狸盘搜: https://www.alipansou.com…

虚拟机安装intel架构的银河麒麟V10(SP1)

一 背景 银河麒麟是国产操作系统之一&#xff0c;是基于Linux内核的桌面操作系统&#xff0c;有自己的应用中心&#xff0c;具有一定的生态系统。今从官网下载了V10&#xff08;SP1&#xff09;镜像文件&#xff0c;在Windowns的VMware虚拟机上安装试用。 二 安装 1、 首先安装…

【漏洞复现】锐捷RG-UAC统一上网行为管理系统信息泄露漏洞

Nx01 产品简介 锐捷网络成立于2000年1月&#xff0c;原名实达网络&#xff0c;2003年更名&#xff0c;自成立以来&#xff0c;一直扎根行业&#xff0c;深入场景进行解决方案设计和创新&#xff0c;并利用云计算、SDN、移动互联、大数据、物联网、AI等新技术为各行业用户提供场…

桶装水在线订水送水系统平台搭建

在线订水系统&#xff0c;为您带来更快捷、更优质的服务。不仅是用户福音&#xff0c;更是商家营销利器。一体化管理&#xff0c;轻松搞定用户、水站、商品、订单及售后。多种营销活动&#xff0c;激发用户复购意愿。 功能亮点如下&#xff1a; 1. 注册登录&#xff1a;手机号…

Mysql 恢复误删库表数据

一、前提 1、如果你的数据库有备份文件&#xff0c;自己还原即可。 2、如果没有备份文件&#xff0c;那首先检查下你的 binlog 是否开启。如果未开启&#xff0c;那你就不用往下看了。如果开启了&#xff0c;可以往下看看。 1.1 查看位置 可以通过以下的命令查看是否开启了 bi…

梯度下降和反向传播:能改

一、背景 1.问题 通过顶点坐标公式&#xff0c;求解出抛物线最低点的w坐标&#xff0c;得到了让误差代价最小的w。同样的&#xff0c;也通过算数说明了这种一步到位求解的方式固然是好&#xff0c;但是在输入特征过多、样本数量过大的时候&#xff0c;却非常消耗计算资源。 …

echarts - xAxis.type设置time时该如何使用formatter的分级模板

echarts 文档中描述了x轴的多种类型 一、type: ‘value’ ‘value’ 数值轴&#xff0c;适用于连续数据。 此时x轴数据是从零开始&#xff0c;有数据大小的区分。 【注意】 因为xAxis.data是为category服务的&#xff0c;所以xAxis.data里面设置的数据无效。 二、type: ‘ca…

前端适配750px设计稿

全局引入 (function(doc, win) {const docEl doc.documentElement,resizeEvt orientationchange in window ? orientationchange : resizeconst setFont function() {let clientWidth docEl.clientWidth;if (!clientWidth) return;if (clientWidth > 750) {docEl.styl…

【自学笔记】01Java基础-07面向对象基础-03常量、枚举类、抽象类、多态详解

记录java基础学习中有关常量、枚举类、抽象类和多态的内容。 1 常量 什么是常量&#xff1f; 常量是使用了public static final修饰的成员变量&#xff0c;必须有初始化值&#xff0c;而且执行的过程中其值不能被改变。 常量名的命名规范&#xff1a;英文单词全部大写&#x…

【JAVA】throw 和 throws 的区别?

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 throw&#xff1a; throws&#xff1a; 区别&#xff1a; 作用&#xff1a; 使用位置&#xff1a; 个数&#xff1a; 应…

软件测试|Python对JSON的解析和创建详解

简介 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;已经成为当今互联网应用中广泛使用的数据格式之一。Python提供了内置的模块来解析和创建JSON数据&#xff0c;使得在Python中处理JSON变得非常简单。本文将详细介绍Python…

【题解】—— LeetCode一周小结

1.经营摩天轮的最大利润 题目链接&#xff1a; 1599. 经营摩天轮的最大利润 你正在经营一座摩天轮&#xff0c;该摩天轮共有 4 个座舱 &#xff0c;每个座舱 最多可以容纳 4 位游客 。你可以 逆时针 轮转座舱&#xff0c;但每次轮转都需要支付一定的运行成本 runningCost 。摩…

Docker简介、基本概念和安装

Docker简介、基本概念和安装 1.docker简介 1.1 什么是docker Docker 最初是 dotCloud 公司创始人 Solomon Hykes (opens new window)在法国期间发起的一个公司内部项目&#xff0c;它是基于 dotCloud 公司多年云服务技术的一次革新&#xff0c;并于 2013 年 3 月以 Apache 2…