力扣131. 分割回文串(java 回溯法)

Problem: 131. 分割回文串

文章目录

  • 题目描述
  • 思路
  • 解题方法
  • 复杂度
  • Code

题目描述

在这里插入图片描述

思路

题目要求我们给出所有的回文子字符串,而涉及到穷举我们可以利用回溯来解决,另外我们也可以发现问题中涉及到元素存在重复但不可复用的特性,因此我们可以类似于利用回溯求解组合问题的套路求解,具体的:

我们以字符串中的每一个字符作为决策阶段,在回溯调用的过程中,每次进行回文判断,若判断当前决策路径上的子字符串为回文字符串,则将其添加到决策路径,并最终当决策阶段等于字符串的长度时将决策路径添加到结果集合中

解题方法

1.定义二维结果集result,决策路径path
2.编写判断回文字符串函数
3.编写调用回溯函数,初始决策阶段为0

3.1 若当前的决策路径等于字符串的长度,则将当前的决策路径添加到结果集result中并返回
3.2 for循环,令循环初始位置i等于当前的决策阶段(假设为k),并判断,若i到k位置的子字符串为回文串则将其添加到当前的决策路径,并开始下一阶段的递归调用,最后恢复当前决策路径的状态

复杂度

时间复杂度:

最坏时间复杂度: O ( n × 2 n ) O(n \times 2^n) O(n×2n)

空间复杂度:

递归开辟的栈空间 O ( 2 n ) O(2^n) O(2n)

Code

class Solution {//Result listList<List<String>> result = new ArrayList<>();//Decision PathList<String> path = new ArrayList<>();/*** Gets all return substrings** @param s Given string* @return List<List < String>>*/public List<List<String>> partition(String s) {backtrack(s, 0);return result;}/*** Get all backtrace substrings using backtrace** @param s Given string* @param k Decision stage*/public void backtrack(String s, int k) {//End conditionif (k == s.length()) {result.add(new ArrayList<>(path));return;}for (int end = k; end < s.length(); ++end) {//if (isPalindrome(s, k, end)) {path.add(s.substring(k, end + 1));backtrack(s, end + 1);//Recover the current Decision Pathpath.remove(path.size() - 1);}}}/*** Determines whether a string is a palindrome string** @param s     Given string* @param start The start position of given string* @param end   The end position of given string* @return boolean*/private boolean isPalindrome(String s, int start, int end) {while (start < end) {if (s.charAt(start) != s.charAt(end)) {return false;}start++;end--;}return true;}
}

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

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

相关文章

18 5G - NR物理层解决方案支持6G非地面网络中的高移动性

文章目录 非地面网络场景链路仿真参数实验仿真结果 非地面网络场景 链路仿真参数 实验仿真结果 Figure 5 && Figure 6&#xff1a;不同信噪比下的BER和吞吐量 变量 SISO 2x2MIMO 2x4MIMO 2x8MIMOReyleigh衰落、Rician衰落、多径TDL-A(NLOS) 、TDL-E(LOS)(a)QPSK (b)16…

【知识积累】深度度量学习综述

原文指路&#xff1a;https://hav4ik.github.io/articles/deep-metric-learning-survey Problem Setting of Supervised Metric Learning 深度度量学习是一组旨在衡量数据样本之间相似性的技术。 Contrastive Approaches 对比方法的主要思想是设计一个损失函数&#xff0c;直…

鸿蒙(HarmonyOS)应用开发——三方库(题目答案)

判断题 1.三方组件是开发者在系统能力的基础上进行了一层具体功能的封装&#xff0c;对其能力进行拓展的工具 。 正确(True) 2.可以通过ohpm uninstall 指令下载指定的三方库 错误(False) 解析&#xff1a;ohpm install指令下载指定的三方库 3.lottie使用loadAnimation方法…

第3章-第2节-Java无限循环和嵌套循环以及break和continue

1、无限循环&#xff1a;又称为死循环&#xff1b; 两种情况&#xff1a; 1&#xff09;、代码逻辑有问题&#xff0c;从而出现死循环&#xff1b;该情况下出现的死循环占用大量的内存资源&#xff0c;我们需要杜绝其出现&#xff1b; 2&#xff09;、根据需求需要人为主动定…

Latch(门阀)设计模式

Latch设计模式指定了一个屏障&#xff0c;只有所有条件满足时&#xff0c;门阀才能打开。Latch的作用是为了等待所有子任务完成后再执行其他任务。CountDownLatch的await超时的时候&#xff0c;已经完成的任务正常结束&#xff0c;未按时完成的任务不会被中断&#xff0c;还会继…

Leetcode 51 N 皇后

题意理解&#xff1a; N皇后问题指的是在一个nn的棋盘上&#xff0c;防止皇后棋子&#xff0c;每行、每列、每45斜角只能有一个皇后存在。 这是一道困难的题&#xff1a;困难在于&#xff1a; 如何处理棋盘&#xff0c;如何表示棋子。 将期盼看作是2维数组&#xff0c;一行一行…

JS冒泡排序

想必大家都多多少少了解过一点排序&#xff0c;让我为大家介绍一下冒泡排序吧&#xff01; 假设我们现在有一个数组[2&#xff0c;4&#xff0c;3&#xff0c;5&#xff0c;1] 我们来分析一下&#xff1a; 1.一共需要的趟数 我们用外层for循环 5个数据我们一共需要走4躺 长度就…

关东升老师极简系列丛书(由清华大学出版社出版)

极简系列丛书&#xff0c;编程学习新体验 在这个科技日新月异的时代&#xff0c;编程已经成为了一种必备技能。但是面对各种复杂的编程语言&#xff0c;你是否也曾感到过迷茫和困惑&#xff1f;由清华大学出版社出版的“极简系列丛书”就是为了帮助你解决这个问题。 这套丛书…

解决nuxt3引入图片报错:ReferenceError: require is not defined

现象&#xff1a; 原因&#xff1a;在nuxt3中不支持require的方式引入图片/文件等静态资源。 解决办法&#xff1a; 1. 直接在img标签中的src属性里写明图片的路径&#xff0c;但是此时src前面不能有冒号做动态绑定&#xff01;&#xff1a; src"/assets/images/loading…

【为什么POI的SXSSFWorkbook占用内存更小?】

&#x1f513;为什么POI的SXSSFWorkbook占用内存更小&#xff1f; &#x1f3c6;POI的SXSSFWorkbook&#x1f3c6;POI的SXSSFWorkbook占用内存&#x1f3c6;扩展配置行缓存限制 &#x1f3c6;POI的SXSSFWorkbook SXSSFWorkbook类是Apache POI库的一部分&#xff0c;它是一个流…

【论文阅读】LoRA: Low-Rank Adaptation of Large Language Models

code&#xff1a;GitHub - microsoft/LoRA: Code for loralib, an implementation of "LoRA: Low-Rank Adaptation of Large Language Models" 做法&#xff1a; 把预训练LLMs里面的参数权重给冻结&#xff1b;向transformer架构中的每一层&#xff0c;注入可训练的…

STM32 LCD 简单显示彩色图片

STM32 LCD 数组方式简单显示彩色图片 文章目录 STM32 LCD 数组方式简单显示彩色图片前言1、图片处理1.1 准备图片1.2 查看和调整图片大小 2、Picture2Hex软件使用3、函数代码实现3、图片显示效果4、显示图片太大会报错总结 前言 在使用LCD填充的时候发现正点原子提供了一个很好…

力扣labuladong一刷day38天扁平化嵌套列表迭代器

力扣labuladong一刷day38天扁平化嵌套列表迭代器 一、341. 扁平化嵌套列表迭代器 题目链接&#xff1a;https://leetcode.cn/problems/flatten-nested-list-iterator/description/ 思路&#xff1a;本题是一个嵌套列表&#xff0c;如果一次性全部给拉平迭代到一维占用的内存可…

用于解释非目标代谢组学数据的集成深度学习框架

摘要 非定向代谢组学正获得广泛应用。数据分析的关键方面包括建模代谢网络的复杂活动、选择与临床结果相关的代谢物以及发现关键代谢途径以揭示生物学机制。数据分析中的一个关键障碍未得到很好解决&#xff0c;即数据特征与已知代谢物之间的匹配不确定性问题。鉴于实验技术的…

字符雨canvas

整体思路&#xff1a; 确定好字符雨的具体字符是什么&#xff0c;需要多少行多少列这里是写死的其实也可以用循环加随机的方式生成不一样的字符雨&#xff0c;行列也可以读一下宽度然后做一下出发算一下也行首先得有一张画布搞起&#xff0c;然后循环列数去绘画字符定时器循环…

【MySQL】主键、唯一键和外键

文章目录 主键唯一键外键 主键 作用&#xff1a; 在一个table中&#xff0c;标识一行记录的唯一性。 语法&#xff1a; create table时&#xff0c;可以紧随列属性声明的后面&#xff0c;如id int primary key &#xff0c;也可以单独成一行&#xff0c;如下&#xff1a; …

获取Java类路径

利用System.getProperty(“java.class.path”)可以获取Java类路径&#xff08;Java class path&#xff09;。 package com.thb;import java.io.IOException;public class Test5 {public static void main(String[] args) throws IOException {System.out.println(System.getP…

【活动回顾】Databend 云数仓与 Databend Playground 扩展组件介绍

2023 年 12 月 7 日&#xff0c;作为 KubeSphere 的合作伙伴&#xff0c;Databend 荣幸地受邀参与了 KubeSphere 社区主办的云原生技术直播活动。本次活动的核心议题为「Databend 云数仓与 Databend Playground 扩展组件介绍」&#xff0c;此次分享由 Databend Labs 的研发工程…

大数据笔记(待续)

mysql 缓存技术 数据库和缓存双写数据一致性问题常见的解决方案 常见方案通常情况下&#xff0c;我们使用缓存的主要目的是为了提升查询的性能。大多数情况下&#xff0c;我们是这样使用缓存的&#xff1a; 用户请求过来之后&#xff0c;先查缓存有没有数据&#xff0c;如果有…

getResource()方法的使用以及路径问题

getResource()方法是Class类中的一个获取文件的方法&#xff0c;我在使用该方法稍微不注意经常会出现如下报错 Exception in thread "main" java.lang.NullPointerException 因此我觉得还是有必要写一篇博客来梳理以下该方法的误区、盲点。 首先getResource()方法可…