剑指 Offer II 回溯法
086. 分割回文子字符串
用substr枚举 因为是连续的 不是放与不放的问题
class Solution {
public:
vector<vector<string>>ans;
vector<string>path;
bool check()
{
for(string x:path)
{
for(int i=0;i<x.size();i++)
{
if(x[i]!=x[x.size()-1-i])return false;
}
}
return true;
}
void dfs(int x,string s)
{
if(x==s.size())
{
if(check())ans.push_back(path);
return ;
}
for(int i=1;i<=s.size()-x;i++)
{
string z=s.substr(x,i);//x开始长度为i
path.push_back(z);
dfs(x+i,s);
path.pop_back();
}
}
vector<vector<string>> partition(string s) {
dfs(0,s);
return ans;
}
};
087. 复原 IP
剪枝
class Solution {
public:
vector<string>ans;
vector<string>path;
int tonum(string x)
{
int sum=0;
for(int i=0;i<x.size();i++)
{
sum=sum*10+x[i]-'0';
}
return sum;
}
bool check()
{
for(string x: path)
{
if(x.size()>3)return false;
if(x.size()>1&&x[0]=='0')return false;//前导0
if(tonum(x)>255)return false;//IP
}
return true;
}
void dfs(int x, string s)
{
if(x==s.size())
{
if(path.size()!=4)return ;
if(check())
{
string k;
for(string x:path)
{
k+=x;
k+=".";
}
k=k.substr(0,k.size()-1);
ans.push_back(k);
}
}
for(int i=1;i<=s.size()-x;i++)
{
string temp=s.substr(x,i);//以x为起点 长度为i的字符串放进去
path.push_back(temp);
dfs(x+i,s);
path.pop_back();
}
}
vector<string> restoreIpAddresses(string s) {
if(s.size()>4*3)return ans;//数据范围3000吓唬谁呢 255 255 255 255
dfs(0,s);//下标
return ans;
}
};
剑指 Offer II 回溯法的更多相关文章
- 刷题-力扣-剑指 Offer II 055. 二叉搜索树迭代器
剑指 Offer II 055. 二叉搜索树迭代器 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/kTOapQ 著作权归领扣网络所有 ...
- 【剑指 Offer II 001. 整数除法】同leedcode 29.两数相除
剑指 Offer II 001. 整数除法 解题思路 在计算的时候将负数转化为正数,对于32位整数而言,最小的正数是-2^31, 将其转化为正数是2^31,导致溢出.因此将正数转化为负数不会导致溢出. ...
- 剑指Offer——II平衡二叉树
class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None # 这道题使用中序遍历加上 ...
- 【力扣】剑指 Offer II 092. 翻转字符
题目 解题思路 一个很暴力的想法,在满足单调递增的前提下,使每一位分别取 1 或 0,去看看哪个结果小. 递归函数定义int dp(StringBuilder sb, int ind, int pre ...
- 剑指Offer——回溯算法
剑指Offer--回溯算法 什么是回溯法 回溯法实际是穷举算法,按问题某种变化趋势穷举下去,如某状态的变化用完还没有得到最优解,则返回上一种状态继续穷举.回溯法有"通用的解题法"之 ...
- 剑指Offer——回溯算法解迷宫问题(java版)
剑指Offer--回溯算法解迷宫问题(java版) 以一个M×N的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍.设计程序,对任意设定的迷宫,求出从入口到出口的所有通路. 下面我们来详细讲一 ...
- 学会从后往前遍历,例 [LeetCode] Pascal's Triangle II,剑指Offer 题4
当我们需要改变数组的值时,如果从前往后遍历,有时会带来很多麻烦,比如需要插入值,导致数组平移,或者新的值覆盖了旧有的值,但旧有的值依然需要被使用.这种情况下,有时仅仅改变一下数组的遍历方向,就会避免这 ...
- [简单-剑指 Offer 53 - II. 0~n-1中缺失的数字]
[简单-剑指 Offer 53 - II. 0-n-1中缺失的数字] 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0-n-1之内.在范围0-n-1内的n个数字中有且只有一 ...
- 剑指 Offer 68 - II. 二叉树的最近公共祖先 + 最近公共祖先(LCA)
剑指 Offer 68 - II. 二叉树的最近公共祖先 Offer_68_2 题目详情 题解分析 java代码 package com.walegarrett.offer; /** * @Autho ...
- 剑指 Offer 58 - II. 左旋转字符串 + 简单题
剑指 Offer 58 - II. 左旋转字符串 Offer_58_2 题目描述 java代码 package com.walegarrett.offer; /** * @Author WaleGar ...
随机推荐
- 主题样式选择效果代码及css样式
先上效果图: 主要页面代码及样式: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> ...
- javaweb-LoginDemo在JdbcTemp的登录实现及总结+进阶javabean改进
刚开始发现- -我好像忘记了JdbcTemp的知识了,以为自己学漏了,重新回去看了一下,还好还记得,所以今天做一个案例: 案例分析: 登录的实现 步骤: 先导入jar包,然后写一个简单的html页面 ...
- P26_wxss - 样式导入
样式导入 什么是样式导入 使用 WXSS 提供的 @import 语法,可以导入外联的样式表. @import 的语法格式 @import 后跟需要导入的外联样式表的相对路径,用 ; 表示语句结束.示 ...
- 微软出品自动化神器【Playwright+Java】系列(九)多线程、重定向、弹出新窗口、截图、新页面、录制、页面对象模式操作
写在前面 关于Playwright系列的文章,真的很久没有写了,今天一个不小心官方API部分过完了,下面将为大家逐一演示,感兴趣的同学可以自行动手练习. API部分 多线程 直白点说就是多线程下Pla ...
- [学习笔记]SQL server完全备份指南
方式一,使用SQL Server Management Studio 准备工作 连接目标数据库服务器 在目标数据库上右键->属性,将数据库的恢复模式设置为"简单",兼容级别设 ...
- JZOJ 6799. 【2014广州市选day2】game
题目 思路 呵呵,正解并不是什么神奇的方法 而是最原始的最粗暴的最有用的最万能的----搜索 依题模拟即可 \(Code\) #include<cstdio> #include<cs ...
- CF845F - Guards In The Storehouse
题意:在 \((x,y)\) 放一个哨兵,可以监视本行后面的所有格子直到障碍.本列后面所有的格子直到障碍.求使全盘最多一个位置不被监视的方案总数. 我们发现,因为 \(nm\le 250\),所以 \ ...
- Git Please commit your changes or stash them before you merge.
本地分支和远程修改了同一个文件代码,pull远程分支的代码的时候会文件冲突 出现这个错误 Please commit your changes or stash them before you mer ...
- C# DevExpress中GridControl控件的基本属性设置和使用方法
1.GridControl隐藏GroupPanel(主面板) 隐藏:鼠标单击Run Designer-OptionsView-ShowGroupPanel=False; 修改:鼠标单击Run Desi ...
- 重写父类的ToString
我们任何对象调用ToString的时候,打出来的都是这个类的命名空间的名字 using System; using System.Collections.Generic; using System.L ...