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

【算法笔记】LCR 086. 分割回文串

在这里插入图片描述
基本思想是使用回溯法,回溯法都可以将问题划分为一个解空间树:假设字符串s为"aab",那么我们可以使用深度优先搜索去构建解空间树:
在这里插入图片描述
dfs遍历出来的第一个序列是[a, a, b],显然该序列都是回文子串,接着回溯,遍历下一个序列,为[a, ab],不是回文子串,去除…如此往下遍历,将符合要求的序列加入到结果集res中,直到遍历整个解空间树

此题的重要思想有两个:
Java中的List变量存储的是List的地址,而非List本身,因此可以构建一个path列表,用于存储当前已经遍历的序列,当dfs向下遍历的时候则将新遍历的字符串加入path中;当向上回溯的时候,可以将path中的最后一个元素remove掉,从而恢复到上一个遍历状态

class Solution {public List<String> path = new ArrayList<>();public List<List<String>> result = new ArrayList();public void f(String str, int start){if (start >= str.length()){// 防止深复制导致的将List地址存入result,需要新建Listresult.add(new ArrayList<>(path));}for (int i = start; i < str.length(); i++) {if (isPalindrome(str, start, i)){path.add(str.substring(start, i+1));}elsecontinue;f(str, i+1);path.remove(path.size()-1); // 回溯}}public boolean isPalindrome(String s,int start,int end){//start从左到右,end从右到左,判断前后是否一致for(int i=start,j=end;i<j;i++,j--){if(s.charAt(i)!=s.charAt(j)){return false;}}return true;}public String[][] partition(String s) {f(s, 0);int rows = result.size();String[][] ret = new String[rows][];for (int i = 0; i < rows; ++i) {int cols = result.get(i).size();ret[i] = new String[cols];for (int j = 0; j < cols; ++j) {ret[i][j] = result.get(i).get(j);}}return ret;}
}

相关文章:

【算法笔记】LCR 086. 分割回文串

基本思想是使用回溯法&#xff0c;回溯法都可以将问题划分为一个解空间树&#xff1a;假设字符串s为"aab"&#xff0c;那么我们可以使用深度优先搜索去构建解空间树&#xff1a; dfs遍历出来的第一个序列是[a, a, b]&#xff0c;显然该序列都是回文子串&#xff0c;…...

centos 安装svn

卸载 yum remove subversion安装 yum -y install subversion仓库目录 mkdir -p /home/svn/project版本目录 svnadmin create /home/svn/project主目录切换 cd /home/svn/project/conf服务配置 vim svnserve.confanon-access read auth-access write …...

Java中的类加载器双亲委派模型机制

Java中的类加载器双亲委派模型机制 Java中的类加载器双亲委派模型是一种类加载机制&#xff0c;用于加载Java类文件。它有助于维护类加载器的层次结构&#xff0c;并确保类的唯一性。以下是关于类加载器双亲委派模型的详细解释、作用、优缺点&#xff0c;以及示例说明。 双亲…...

[spring] spring jpa - hibernate 名词解释配置

[spring] spring jpa - hibernate 名词解释&配置 之前过了一遍依赖注入的内容&#xff0c;这次过一下数据相关的部分&#xff0c;完成了这部分内容&#xff0c;下篇就涉及到 API 实现了 操作的部分放到下一篇&#xff0c;本篇主要是概念配置 整体课程上来说&#xff0c;…...

java判断字符串是否为时间格式

要判断一个字符串是否为时间格式&#xff0c;可以使用Java中的正则表达式来检查字符串是否符合时间格式的模式。以下是一个示例&#xff0c;演示如何使用正则表达式来判断一个字符串是否为时间格式&#xff1a; import java.util.regex.Matcher; import java.util.regex.Patte…...

【Java】什么是API

API (Application Programming Interface,应用程序编程接口) Java中的API 指的就是 JDK 中提供的各种功能的 Java类&#xff0c;这些类将底层封装起来&#xff0c;我们不需要关心这些类是如何实现的&#xff0c;只需要学习这些类如何使用即可&#xff0c;我们可以通过帮助文档…...

Hazelcast系列(三):hazelcast集成(服务器/客户端)

系列文章 Hazelcast系列(一)&#xff1a;初识hazelcast Hazelcast系列(二)&#xff1a;hazelcast集成&#xff08;嵌入式&#xff09; Hazelcast系列(三)&#xff1a;hazelcast集成&#xff08;服务器/客户端&#xff09; Hazelcast系列(四)&#xff1a;hazelcast管理中心 …...

vscode 配置默认shell

vscode 配置默认shell 最简单方式 "terminal.integrated.defaultProfile.osx": "zsh", 也可以自定义&#xff0c;参考 https://code.visualstudio.com/docs/terminal/profiles terminal 修改默认shell change your default shell to zsh chsh -s /bin/…...

品牌低价的形式有哪些

线上产品五花八门&#xff0c;价格也有高低&#xff0c;但有时同一款商品&#xff0c;看似页面价一样&#xff0c;计算完促销信息后的到手价都会有所不同&#xff0c;有些店铺甚至会使用隐藏优惠券&#xff0c;如咨询客服领券、新人券等&#xff0c;而这些丰富的优惠方式&#…...

SPA项目之主页面--数据表格的增删改查

SPA项目之主页面--数据表格的增删改查 一.增删改查1.样式准备2.增加3.删除4.修改5.查询二.表单验证1.在表单中使用验证规则 一.增删改查 1.样式准备 <template><div class"books" style"padding: 20px;"><el-form :inline"true"…...

Adobe Premiere Pro:掌控视频剪辑的魔法之手,让你的创作腾飞!

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是尘缘&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f449;点击这里&#xff0c;就可以查看我的主页啦&#xff01;&#x1f447;&#x…...

ES知识点全面整理

● 我们从很多年前就知道 ES6, 也就是官方发布的 ES2015 ● 从 2015 年开始, 官方觉得大家命名太乱了, 所以决定以年份命名 ● 但是大家还是习惯了叫做 ES6, 不过这不重要 ● 重要的是, ES6 关注的人非常多, 大家也会主动去关注 ● 但是从 2016 年以后, 每年官方都会出现新…...

【电商API封装接口】电商百万商品资源一键导入,助力企业流量变现

电商API接口是淘宝开放平台提供的一组数据接口&#xff0c;供开发者使用来获取淘宝平台上商品、店铺、订单等相关信息。根据功能和分类&#xff0c;淘宝API主要包括以下几个方面&#xff1a; 1. 商品API&#xff1a;提供了搜索、详情、评价等与商品相关的接口&#xff0c;可以…...

bootz启动 Linux内核过程中涉及的全局变量images

一. bootz启动Linux uboot 启动Linux内核使用bootz命令。当然还有其它的启动命令&#xff0c;例如&#xff0c;bootm命令等等。 本文只分析 bootz命令启动 Linux内核的过程。 本文具体分析 bootz启动 Linux内核过程涉及的一个重要的全局变量 images。 二. bootz 启动 Linux…...

Vuex的使用,详细易懂

目录 一.前言 二.Vuex的简介 三.vuex的使用 3.1 安装Vuex 3.2 使用Vuex的步骤&#xff1a; 四.vuex的存值取值&#xff08;改变值&#xff09; 五.vuex的异步请求 好啦&#xff0c;今天的分享就到这啦&#xff01;&#xff01;&#xff01; 一.前言 今天我们继续前面的E…...

基于多线程的Reactor模式的 回声服务器 EchoServer

记录下 一个线程专门用来接受accept获取客户端的fd 获取fd之后 从剩余的执行线程中 找到一个连接客户端数量最少的线程 然后将客户端的fd加入到这个线程中并通过EPOLL监听这个fd 线程之间通过eventfd来通信 将客户端的fd传到 对应的线程中 参考了MediaServer 引入…...

《TWS蓝牙耳机通信原理与接口技术》

+他V hezkz17进数字音频系统研究开发交流答疑群(课题组) 耳机BT与手机BT通信 主耳与从耳通信 耳机BLE盒手机BLE通信 充电盒与耳机通信 上位机与耳机通信 上位机与充电盒通信 1 耳机BT与手机BT通信 传输音频数据传递控制信息 (3) 耳机BLE与手机BLE通信 安卓/苹果app-耳机…...

敏捷开发使用

1.敏捷开发 敏捷开发以用户的需求进化为核心&#xff0c;采用迭代、循序渐进的方法进行软件开发。在敏捷开发中&#xff0c;软件项目在构建初期被切分成多个子项目&#xff0c;各个子项目的成果都经过测试&#xff0c;具备可视、可集成和可运行使用的特征。换言之&#xff0c;就…...

cdsn目录处理:```,```# 目录校正

原标题 <small> cdsn目录处理&#xff1a; &#xff0c;中间添加 # 空格 空行后 遇到的底部空行出错&#xff0c;书接上回&#xff0c;处理空行【python查找替换&#xff1a;查找空行&#xff0c;空行前后添加&#xff0c;中间添加 # 空格 空行后遇到的第1行文字&am…...

前端TypeScript学习day03-TS高级类型

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 TypeScript 高级类型 class 类 class继承 extends implements 类成员可见性 public protected …...

【第四周】论文精读:Frustratingly Simple Retrieval Improves Challenging, Reasoning-Intensive Benchmarks

极简检索即可大幅刷新高难度推理基准主流观点认为简单RAG无法提升MMLU、MATH、GPQA等高难度推理任务&#xff0c;甚至会损害性能&#xff1b;本文推翻这一共识&#xff0c;证明核心瓶颈并非检索范式&#xff0c;而是缺少高质量、广覆盖、可单机部署的检索库&#xff1b;提出COM…...

OpenClaw+GLM-4.7-Flash开发提效:日志分析+异常告警自动化

OpenClawGLM-4.7-Flash开发提效&#xff1a;日志分析异常告警自动化 1. 为什么需要自动化日志监控 作为开发者&#xff0c;我每天要面对服务器、应用和中间件产生的海量日志。曾经为了排查一个线上问题&#xff0c;我需要手动grep几十MB的日志文件&#xff0c;眼睛盯着屏幕找异…...

UEFI启动画面定制指南:3步实现个性化Windows启动界面

UEFI启动画面定制指南&#xff1a;3步实现个性化Windows启动界面 【免费下载链接】HackBGRT Windows boot logo changer for UEFI systems 项目地址: https://gitcode.com/gh_mirrors/ha/HackBGRT HackBGRT是一款专为UEFI系统设计的Windows启动画面定制工具&#xff0c;…...

如何快速完成亚马逊SP-API注册:AWS IAM策略与角色配置详解

亚马逊SP-API高效注册指南&#xff1a;从AWS IAM配置到应用上线的全流程解析 当你的电商业务需要与亚马逊平台深度集成时&#xff0c;SP-API&#xff08;Selling Partner API&#xff09;将成为不可或缺的工具。作为亚马逊新一代的开发者接口&#xff0c;它比传统的MWS提供了更…...

LiuJuan20260223Zimage新手必看:从CSDN博客文档到本地成功出图的避坑指南

LiuJuan20260223Zimage新手必看&#xff1a;从CSDN博客文档到本地成功出图的避坑指南 你是不是也遇到过这种情况&#xff1f;在CSDN上看到一个有趣的AI绘画模型&#xff0c;比如这个LiuJuan20260223Zimage&#xff0c;文档写得清清楚楚&#xff0c;但自己一上手部署&#xff0…...

51单片机+DAC0832信号发生器实战:从硬件搭建到波形调试全记录(附避坑指南)

51单片机DAC0832信号发生器实战&#xff1a;从硬件搭建到波形调试全记录&#xff08;附避坑指南&#xff09; 在电子设计领域&#xff0c;信号发生器是工程师和爱好者不可或缺的工具。传统商用设备虽然功能强大&#xff0c;但对于学习嵌入式系统和数模转换原理而言&#xff0c;…...

python高校大学生家教平台的设计与开发

目录需求分析与功能规划技术栈选型数据库设计关键功能实现测试与部署持续迭代项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作需求分析与功能规划 明确平台核心需求&#xff0c;包括用户角色划分&#xff08;学生、教师、管理员…...

DeerFlow参数详解:vLLM服务日志排查(llm.log/bootstrap.log)实战

DeerFlow参数详解&#xff1a;vLLM服务日志排查&#xff08;llm.log/bootstrap.log&#xff09;实战 1. 认识DeerFlow&#xff1a;您的智能研究助手 DeerFlow是字节跳动基于LangStack技术框架开发的深度研究开源项目&#xff0c;它就像是您的个人研究团队&#xff0c;整合了语…...

单片机I/O口阻抗特性及其在电路设计中的关键作用

1. 阻抗基础&#xff1a;从水管到电路的理解 第一次接触阻抗概念时&#xff0c;我盯着教科书上的公式发呆了半小时。直到有天修水管时突然开窍——这不就是水管的粗细对水流的影响吗&#xff1f;在电路中&#xff0c;阻抗就是电子流动遇到的"阻力"。但和水管不同&…...

Bongo-Cat-Mver:实时键盘动画工具的创新应用与实践指南

Bongo-Cat-Mver&#xff1a;实时键盘动画工具的创新应用与实践指南 【免费下载链接】Bongo-Cat-Mver An Bongo Cat overlay written in C 项目地址: https://gitcode.com/gh_mirrors/bo/Bongo-Cat-Mver 在直播、教学和演示场景中&#xff0c;如何让观众清晰感知键盘操作…...