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

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.lryc.cn/news/2386256.html

相关文章:

  • Android本地语音识别引擎深度对比与集成指南:Vosk vs SherpaOnnx
  • 审计报告附注救星!实现Word表格纵向求和+横向计算及其对应的智能校验
  • 人工智能数学基础实验(四):最大似然估计的-AI 模型训练与参数优化
  • 告别延迟!Ethernetip转modbustcp网关在熔炼车间监控的极速时代
  • Kotlin协程优化Android ANR问题
  • Visual Studio Code插件离线安装指南:从市场获取并手动部署
  • 构建安全AI风险识别大模型:CoT、训练集与Agent vs. Fine-Tuning对比
  • 计算机视觉---YOLOv1
  • 无法同步书签,火狐浏览器修改使用国内的账号服务器
  • 动态防御体系实战:AI如何重构DDoS攻防逻辑
  • Kotlin Native与C/C++高效互操作:技术原理与性能优化指南
  • 爬虫核心概念与工作原理详解
  • Flink架构概览,Flink DataStream API 的使用,FlinkCDC的使用
  • vue3前端后端地址可配置方案
  • Es6中怎么使用class实现面向对象编程
  • digitalworld.local: FALL靶场
  • MySQL---库操作
  • 动态规划算法:字符串类问题(2)公共串
  • uni-app(5):Vue3语法基础上
  • 深度解析Vue项目Webpack打包分包策略 从基础配置到高级优化,全面掌握性能优化核心技巧
  • ubuntu下docker安装mongodb-支持单副本集
  • spring-boot-starter-data-redis应用详解
  • 5060显卡驱动PyCUDA开发环境搭建
  • redis搭建最小的集群,3主3从
  • 《帝国时代1》游戏秘籍
  • 【sylar-webserver】10 HTTP模块
  • 攻略生成模块
  • 海康NVR录像回放SDK原始流转FLV视频流:基于Java的流媒体转码(无需安装第三方插件ffmpeg)
  • 深入理解设计模式:工厂模式、单例模式
  • 运维Linux之Ansible详解学习(更新中)