当前位置: 首页 > news >正文

代码随想录训练营Day20 | 93.复原IP地址 - 78.子集 - 90.子集II

93.复原IP地址

  • 题目链接:93.复原IP地址
  • 思路:
    1. 做法和分割回文字符串那题类似,是对字符串进行切割;
    2. 本题需要多几个条件,就是每次回溯字符串的长度最多三位,字符串对应的数值必须 在[0, 255]之间,并且不能有前导0的存在,并且只能被切割成4个字符串
  • 代码:
class Solution {
public:vector<string> restoreIpAddresses(string s) {vector<string> ans;vector<string> tmp;if(s.size() > 12) // 字符串长度最大为12return {};int n = s.size();auto dfs = [&](auto&& dfs, int k) {if(k < n && tmp.size() == 4) // 切割了四个数,但是字符串还剩下,不符合return;if(k == n && tmp.size() == 4) { // 符合条件stringstream ss; // 将字符串数组转化为ip地址for(int i = 0; i < 4; ++i) {ss << tmp[i];if(i != 3) ss << '.';}  ans.push_back(ss.str());}string str = "";for(int i = k; i < n && i < k + 3; ++i) {str += s[i];if(stoi(str) <= 255) { // 在[0. 255]之前tmp.push_back(str);dfs(dfs, i+1);tmp.pop_back();}if(s[k] == '0')   // 去除前导0break;}};dfs(dfs, 0);return ans;}
};

78.子集

  • 题目链接:78.子集
  • 思路:本题较为简单,每次一个数没有被选择的数,即可组成一个集合,将集合放入到答案中即可
  • 代码:
class Solution {
public:vector<vector<int>> subsets(vector<int>& nums) {vector<vector<int>> ans;vector<int> tmp;int n = nums.size();auto dfs = [&](auto&& dfs, int i) {ans.push_back(tmp); // 记录集合if(i == n) {return;}for(int j = i; j < n; j++) {tmp.push_back(nums[j]); // 选一个数dfs(dfs, j+1);tmp.pop_back();}};dfs(dfs, 0);return ans;}
};

90.子集II

  • 题目链接:90.子集II
  • 思路:思路和子集那道题一样,不同的是这道题需要进行去重,相同数字,在一次回溯函数过程中只能被选择一次,需要进行去重,所以需要先排序
  • 代码:

class Solution {
public:vector<vector<int>> subsetsWithDup(vector<int>& nums) {vector<vector<int>> ans;vector<int> tmp;ranges::sort(nums);  // 数组排序,方便去重int n = nums.size();auto dfs = [&](auto&& dfs, int i) {ans.push_back(tmp);if(i == n) {return;}for(int j = i; j < n; j++) {if(j != i && nums[j] == nums[j-1]) // 去重continue;tmp.push_back(nums[j]);dfs(dfs, j+1);tmp.pop_back();}};dfs(dfs, 0);return ans;}
};
http://www.lryc.cn/news/480746.html

相关文章:

  • [Meachines] [Medium] MonitorsThree SQLI+Cacti-CMS-RCE+Duplicati权限提升
  • Elasticsearch专栏-4.es基本用法-查询api
  • jmeter基础04_设置外观和字体
  • 重构代码之替换参数为显式方法
  • 三菱QD77MS定位模块速度限制功能
  • Axure PR 9 多级下拉选择器 设计交互
  • Java基础使用②Java数据变量和类型+小知识点
  • 从 HTTP 到 HTTPS 再到 HSTS:网站安全的演变与实践
  • Qt的跨平台介绍
  • 数据库DQL
  • Am I Isolated:一款安全态势基准测试工具
  • Unity性能优化 -- 性能分析工具
  • 【微信小程序】基本语法
  • go中的类型断言详解
  • vite构建的react程序放置图片
  • 学习事件循环
  • 终端NuShell git权限异常处理
  • Mybatis Plus 集成 PgSQL 指南
  • Rust常用数据结构教程 Map
  • <el-popover>可以展示select change改变值的时候popover 框会自动隐藏
  • SQLI LABS | Less-37 POST-Bypass mysql_real_escape_string
  • 数字后端零基础入门系列 | Innovus零基础LAB学习Day9
  • 深度学习:GLUE(General Language Understanding Evaluation)详解
  • 基于Multisim直流稳压电源电路±9V、±5V(含仿真和报告)
  • Vue Cli的配置中configureWebpack和chainWebpack的主要作用及区别是什么?
  • ubuntu主机搭建sysroot交叉编译环境
  • Python注意力机制Attention下CNN-LSTM-ARIMA混合模型预测中国银行股票价格|附数据代码...
  • 实验三 JDBC数据库操作编程(设计性)
  • 各种环境换源教程
  • Rust项目中的Labels