力扣--动态规划/回溯算法131.分割回文串

思路分析:

  1. 动态规划 (DP): 使用动态规划数组 dp,其中 dp[i][j] 表示从字符串 s[i]s[j] 是否为回文子串。
  2. 预处理动态规划数组: 从字符串末尾开始,遍历每个字符组合,判断是否为回文子串,填充动态规划数组。
  3. 深度优先搜索 (DFS): 利用递归,尝试从字符串的每个位置开始,生成满足回文子串条件的组合。
  4. 递归函数 dfs
    • 接收参数:dp 为动态规划数组,s 为原始字符串,start 为当前递归的起始位置。
    • 遍历当前可能的字符串,如果当前字符串是回文子串,则将其加入临时结果集 path
    • 如果当前位置 i 达到字符串末尾,将当前路径加入结果集,并回溯。
    • 继续递归生成组合,注意起始位置更新为 i + 1
    • 回溯过程中,撤销选择,继续尝试其他可能的组合。
  5. 主函数:
    • 创建空的结果集 result 和临时结果集 path
    • 调用深度优先搜索函数 dfs,从起始位置 0 开始生成组合。
    • 返回最终结果。
class Solution {// 存储最终结果的二维数组vector<vector<string>> result;// 存储当前正在生成的组合的临时结果vector<string> path;// 定义深度优先搜索函数,用于生成组合void dfs(vector<vector<bool>>& dp, string s, int start) {// 遍历当前可能的字符串for (int i = start; i < s.size(); i++) {// 如果当前字符串是回文子串if (dp[start][i]) {// 将当前回文子串加入临时结果集path.push_back(s.substr(start, i - start + 1));// 如果当前位置 i 达到字符串末尾,将当前路径加入结果集,并回溯if (i == s.size() - 1) {result.push_back(path);path.pop_back();return;}// 继续递归生成组合,注意起始位置更新为 i + 1dfs(dp, s, i + 1);// 回溯,撤销选择,继续尝试其他可能的组合path.pop_back();}}return;}public:// 主函数,生成所有回文子串的组合vector<vector<string>> partition(string s) {int n = s.size();// 二维动态规划数组,dp[i][j] 表示 s[i] 到 s[j] 是否为回文子串vector<vector<bool>> dp(n, vector<bool>(n, false));// 倒序遍历字符串,填充动态规划数组for (int i = n - 1; i >= 0; i--) {for (int j = i; j < n; j++) {// 如果当前字符相等,并且满足回文子串的条件if (s[i] == s[j] && (i == j || i == j - 1 || dp[i + 1][j - 1])) {dp[i][j] = true;}}}// 调用深度优先搜索函数 dfs,从起始位置 0 开始生成组合dfs(dp, s, 0);// 返回最终结果return result;}
};

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

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

相关文章

python 导入excel空间三维坐标 生成三维曲面地形图 5-3、线条平滑曲面且可通过面观察柱体变化(三)

环境 python:python-3.12.0-amd64 包: matplotlib 3.8.2 pandas 2.1.4 openpyxl 3.1.2 scipy 1.12.0 import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from scipy.interpolate import griddata from matplotlib.c…

2024年最新指南:如何订阅Midjourney(详尽步骤解析)

前言&#xff1a; Midjourney是一个基于人工智能的图像生成工具&#xff0c;它使用高级算法来创建独特和复杂的图像。这个工具能够根据用户输入的文字描述生成对应的图片。Midjourney的特点在于它能够处理非常抽象或者具体的描述&#xff0c;生成高质量、富有创意的视觉内容。M…

命名实体识别,根据实体计算准确率、召回率和F1

文章目录 简介数据格式介绍准确率、召回率和F1评估评估代码评估结果 进一步阅读参考 简介 使用大模型训练完命名实体识别的模型后&#xff0c;发现不知道怎么评估实体识别的准确率、召回率和F1。于是便自己实现了代码&#xff0c;同时提供了完整可运行的项目代码。 完整代码&…

java SSM科研管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM科研管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S…

【JAVA】基于HTML与CSS的尚品汇项目

1.代码 index.html <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><!-- 引入页签图标 --><link rel"shortcut icon"…

深入了解 AVL 树

引言&#xff1a; AVL 树是一种自平衡二叉搜索树&#xff0c;它能够保持树的平衡性&#xff0c;从而提高了搜索、插入和删除操作的效率。在本文中&#xff0c;我们将深入探讨 AVL 树的概念、使用场景&#xff0c;并通过 Java 实现一个简单的 AVL 树。 一、AVL 树的概念 AVL 树是…

计算机设计大赛 疲劳驾驶检测系统 python

文章目录 0 前言1 课题背景2 Dlib人脸识别2.1 简介2.2 Dlib优点2.3 相关代码2.4 人脸数据库2.5 人脸录入加识别效果 3 疲劳检测算法3.1 眼睛检测算法3.2 打哈欠检测算法3.3 点头检测算法 4 PyQt54.1 简介4.2相关界面代码 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#x…

【RAG】Chain-of-Verification Reduces Hallucination in LLM

note 百川智能还参考Meta的CoVe&#xff08;Chain-of-Verification Reduces Hallucination in Large Language Models&#xff09;技术&#xff0c;将真实场景的用户复杂问题拆分成多个独立可并行检索的子结构问题&#xff0c;从而让大模型可以针对每个子问题进行定向的知识库…

基于电鳗觅食优化算法(Electric eel foraging optimization,EEFO)的无人机三维路径规划(提供MATLAB代码)

一、无人机路径规划模型介绍 无人机三维路径规划是指在三维空间中为无人机规划一条合理的飞行路径&#xff0c;使其能够安全、高效地完成任务。路径规划是无人机自主飞行的关键技术之一&#xff0c;它可以通过算法和模型来确定无人机的航迹&#xff0c;以避开障碍物、优化飞行…

城市基础信息管理系统 (VB版电子地图源码/公交车线路图/超市平面图)-143-(代码+程序说明)

转载地址http://www.3q2008.com/soft/search.asp?keyword143 请访问 以下地址,查看最新版本, 新增加支持 建筑物 距离测量, 鸟瞰, 地图放大缩小, VB完善地图扩充程序(城市街道基础信息管理系统 )-362-&#xff08;代码&#xff0b;论文&#xff09; 这套系统印象深刻 因为,写…

【图论】 【割点】 【双连通分类】LCP 54. 夺回据点

本文涉及知识点 图论 割点 双连通分类 割点原理及封装好的割点类 LeetCode LCP 54. 夺回据点 魔物了占领若干据点&#xff0c;这些据点被若干条道路相连接&#xff0c;roads[i] [x, y] 表示编号 x、y 的两个据点通过一条道路连接。 现在勇者要将按照以下原则将这些据点逐一…

AI绘画教程:Midjourney 使用方法与技巧从入门到精通

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 导论 随着人工智能技术的不断发展&#xff0c…