Palindrome Partitioning (回文子串题)
Given a string s, partition s such that every substring of the partition is a palindrome.
Return all possible palindrome partitioning of s.
For example, given s = "aab"
,
Return
[
["aa","b"],
["a","a","b"]
] 题意理解:就是把一个字符串进行切割,要求切割之后的子串是回文串。 思路步骤:1.回文字符串划分 2.动态规划生成回文字符串数组 3.根据dp数组用深度搜索生成回文字符串的划分 简单描述一下,首先用动态规划的方法记录出dp[i][j]是否为回文子串(是为1,否则为0)。dp[i][j]表示字符串s中的索引从i....j的子串是不是回文字符串。 构造dp数组,当i=j时,dp[i][j]=1。 当i不等于j时,要求dp[i][j]只需当s[i]==s[j]且dp[i+1][j-1]=1来判断其余的即可。(i+1和j-1表示子串s[i...j]变为子串s[i+1...j-1],即去掉左右两边) 因此我们得反着来求dp,因为需要用到i+1. 然后根据生成好的dp数组,用dfs对数组进行划分。![]()
代码:
class Solution {
private:
int dp[][];
vector<vector<string>> result;
void dfs(string s, int begin,vector<string> temp) {
if(begin==s.length()) {
result.push_back(temp);
return;
}
for(int i=begin;i<s.length();i++) {
if(dp[begin][i]==) {
temp.push_back(s.substr(begin,i-begin+));
dfs(s,i+,temp);
temp.pop_back();
}
}
}
void dp_resolve(string s){
int n=s.size();
memset(dp,,sizeof(dp)); for (int i = n-; i >=; --i)
{
for (int j = i; j < n; ++j)
{
if(j==i){
dp[i][j]=;
}else if(j==i+){
if(s[i]==s[j]) dp[i][j]=;
}
else{
if(s[i]==s[j]&&dp[i+][j-]) dp[i][j]=;
}
}
}
vector<string> temp;
dfs(s,,temp);
return;
}
public:
vector<vector<string>> partition(string s) {
if(s.empty()) return result;
dp_resolve(s);
return result;
}
};
参考博文:http://blog.csdn.net/worldwindjp/article/details/22042133
http://blog.csdn.net/u011095253/article/details/9177451
类似题目:最长回文子串(Longest Palindromic Substring)
最长回文子序列
Palindrome Partitioning (回文子串题)的更多相关文章
- 131. Palindrome Partitioning(回文子串划分 深度优先)
Given a string s, partition s such that every substring of the partition is a palindrome. Return all ...
- 【HDU】4632 Palindrome subsequence(回文子串的个数)
思路:设dp[i][j] 为i到j内回文子串的个数.先枚举所有字符串区间.再依据容斥原理. 那么状态转移方程为 dp[i][j] = dp[i][j-1] + dp[i+1][j] - dp[i+ ...
- [LeetCode] 131. Palindrome Partitioning 回文分割
Given a string s, partition s such that every substring of the partition is a palindrome. Return all ...
- Atcoder CODE FESTIVAL 2017 qual C D - Yet Another Palindrome Partitioning 回文串划分
题目链接 题意 给定一个字符串(长度\(\leq 2e5\)),将其划分成尽量少的段,使得每段内重新排列后可以成为一个回文串. 题解 分析 每段内重新排列后是一个回文串\(\rightarrow\)该 ...
- 后缀数组 - 求最长回文子串 + 模板题 --- ural 1297
1297. Palindrome Time Limit: 1.0 secondMemory Limit: 16 MB The “U.S. Robots” HQ has just received a ...
- #leetcode刷题之路5-最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1:输入: "babad"输出: "bab"注意: " ...
- 【算法】最长回文子串 longest palindrome substring
对于字符串S, 要找到它最长的回文子串,能想到的最暴力方法,应该是对于每个元素i-th都向左向右对称搜索,最后用一个数组span 记录下相对应元素i-th为中心的回文子串长度. 那么问题来了: 1. ...
- 【LeetCode每日一题 Day 5】5. 最长回文子串
大家好,我是编程熊,今天是LeetCode每日一题的第五天,一起学习LeetCode第五题<最长回文子串>. 题意 给你一个字符串 s,找到 s 中最长的回文子串. 示例 输入:s = & ...
- LeetCode随缘刷题之最长回文子串
这一题我用的相对比较笨的方法. 相对于大佬们用的动态规划法,比较复杂.但却更容易理解,我主要是通过记录下标来确定最长回文串的. package leetcode.day_12_06; /** * 给你 ...
随机推荐
- (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案二
http://blog.csdn.net/yerenyuan_pku/article/details/52894958 前面我们已经集成了Spring4.2.5+Hibernate4.3.11+Str ...
- easyui前端框架01
一. 三大前端框架的特点 1.easyui=jquery+html4 优点:快速开发.功能齐全 .免费 缺点:不好看.不支持相应式开发 2.bootstrap=jquery+html5 优点: 功能强 ...
- 单片微机原理P1:80C51指令系统和编程方法
0. 寻址方式 寻址方式在汇编中是很重要的,汇编所有的操作都是和和内存或者寄存器打交道的,在80C51里面一共7种寻址方式. 1. 立即寻址: 这个没什么好说的,就是往寄存器或者内存里面写立即数, ...
- 【转载】Shell 基础 -- 总结几种括号、引号的用法
原作者:tongye 原文链接:https://www.cnblogs.com/tongye/p/10646211.html 以下为原文: Shell 脚本中经常需要用到一些括号.引号表达式,功能各不 ...
- Http请求封装(对HttpClient类的进一步封装,使之调用更方便。另外,此类管理唯一的HttpClient对象,支持线程池调用,效率更高)
package com.ad.ssp.engine.common; import java.io.IOException; import java.util.ArrayList; import jav ...
- Linux离线安装redis集群
一.应用场景介绍 本文主要是介绍Redis集群在Linux环境下的安装讲解,联网环境安装较为简单,这里只说脱机的Linux环境下是如何安装的.因为大多数时候,公司的生产环境是在内网环境下,无外网,服务 ...
- 如何禁用python警告
有-W选项. python -W ignore foo.py 所属网站分类: python基础 > 综合&其它 作者:jiem 链接:http://www.pythonheidong.c ...
- Android开发——查询/杀死手机里正在运行的进程
0. 前言 以前有同学好像做过一个叫"自习君"的App,开启后自动检测用户这一天的自习时间,在学校里宣传广告还打了不少.其实实现原理非常简单,在SQlite数据库(也可以通过文件) ...
- ArrayList练习之存储字符串并遍历
在myArrayList项目下 新建一个包 在这个包中新建一个类:ArrayListDemo4.java ArrayListDemo4.java import java.util.ArrayList; ...
- 安装MySQL for Windows 数据库
在官网下载MySql数据库windows版本:http://dev.mysql.com/downloads/file/?id=459075 下载到本地解压出来,如下图: 复制上面目录下的my-defa ...