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

leetcode 131. Palindrome Partitioning

目录

一、题目描述

二、方法1、回溯法+每次暴力判断回文子串

三、方法2、动态规划+回溯法


一、题目描述

分割回文子串

131. Palindrome Partitioning

二、方法1、回溯法+每次暴力判断回文子串

class Solution {vector<vector<string>> res;vector<string> path;
public:vector<vector<string>> partition(string s) {backtracking(s,0);return res;}void backtracking(string &s,int start){if(start == s.size()){res.push_back(path);return;}for(int i = start;i < s.size();i++){string cur = s.substr(start,i-start+1);if(!isPalindrome(cur))continue;path.push_back(cur);backtracking(s,i+1);path.pop_back();}}bool isPalindrome(const string &str){int left = 0;int right = str.size()-1;while(left<=right){if(str[left]!= str[right])return false;left++;right--;}return true;}
};

三、方法2、动态规划+回溯法

先用动态规划法,求出s[i,j]是否是回文子串,后面直接查表判断回文子串。

参考leetcode 647. Palindromic Substrings-CSDN博客

class Solution {vector<vector<string>> res;vector<string> path;vector<vector<bool>> dp;
public:vector<vector<string>> partition(string s) {int n = s.size();//0 <= i<=j <= n-1//dp[i][j]表示s[i,j]是否是回文子串,其中i<=j,i>j的dp[i][j]不定义dp.resize(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]){if(j-i <= 1){dp[i][j] = true;}else if(dp[i+1][j-1] == true){dp[i][j] = true;}}}}backtracking(s,0);return res;}void backtracking(string &s,int start){if(start == s.size()){res.push_back(path);return;}for(int i = start;i < s.size();i++){string cur = s.substr(start,i-start+1);// if(!isPalindrome(cur))//     continue;if(!dp[start][i])continue;path.push_back(cur);backtracking(s,i+1);path.pop_back();}}// bool isPalindrome(const string &str){//     int left = 0;//     int right = str.size()-1;//     while(left<=right){//         if(str[left]!= str[right])//             return false;//         left++;//         right--;//     }//     return true;// }
};
http://www.xdnf.cn/news/636643.html

相关文章:

  • Oracle 19c TFA工具的安装与使用详解
  • 【辰辉创聚生物】FGF信号通路相关蛋白:解码生命调控的关键枢纽
  • 第三十一天打卡
  • 医学写作供应商管理全流程优化
  • Github 今日热点 完全本地化的自主AI助手,无需API或云端依赖
  • 【JSON 】全面掌握JSON的相关知识
  • 上海医日健集团物联网专利技术领跑智慧药房赛道
  • C++编程单例模式详细解释---模拟一个网络配置管理器,负责管理和分发网络连接参数
  • 【OCCT+ImGUI系列】010-BRepMesh-网格化IncrementalMesh
  • 文本特征提取
  • GO 语言进阶之 进程 OS与 编码,数据格式转换
  • 【Leetcode 每日一题】2131. 连接两字母单词得到的最长回文串
  • 39.组合总和
  • leetcode560-和为k的子数组
  • arxml文件
  • JVM 的类加载机制
  • 进程管理(第二、三、四章)
  • 【车用永磁同步电机随机开关频率控制策略:高频谐波抑制的工程实践】
  • Python入门手册:条件判断
  • 云原生安全之网络IP协议:从基础到实践指南
  • mysql都有哪些锁?
  • 历年北京理工大学保研上机真题
  • 分布式缓存:ZSET → MGET 跨槽(cross‐slot)/ 并发 GET解决思路
  • 第十九章:数据治理之数据指标(一):数据指标工具之【指标口径管理系统】与【指标数据查询系统】
  • AnyIOasyncio 现代化方法
  • Ntfs!NtfsReadBootSector函数分析之nt!CcGetVacbMiss中得到一个nt!_VACB结构
  • 李宏毅《机器学习2025》笔记 第二讲 —— AI Agent
  • Dubbo与OpenFeign的区别
  • Apache 高级配置实战:从连接保持到日志分析的完整指南
  • 用python实现中国象棋