转载请注明来自souldak,微博:@evagle

上一篇是要输出所有的可能拆分,这回是要输出拆分次数最少的切割次数。

如果直接按照上一篇那么做的话,就会超时,因为我们在判断s[i][j]是否是回文的时候做了很多的无用功,每一个s[i][j]都用字符串计算了一遍,然而实际上可以根据s[i+1][j+1]推算出来的。

题目。代码如下

/**
* @file Palindrome_Partitioning2.cpp
* @Brief
* @author Brian
* @version 1.0
* @date 2013-09-06
*/ #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <memory.h>
#include <algorithm>
#include <math.h>
#include <queue>
#include <vector>
using namespace std;
#define MAXINT 0x7fffffff class Solution {
public:
int minCut(string s) { int len = s.length();
int* cutNum = new int[len];
//int[i][j]: true if substr(i,j) is palindrome, false if not
bool** palindrome = new bool*[len];
for(int i=0;i<len;i++)
palindrome[i] = new bool[len];
//init palindrome for(int l=0;l<=len;l++){
for(int i=0;i<=len-l&&i<len;i++){
if(l==1||l==0) palindrome[i][l] = true;
else{
palindrome[i][l] = palindrome[i+1][l-2]&&(s[i]==s[i+l-1]);
}
}
}
for(int i=0;i<len;i++)
cutNum[i]=MAXINT;
cutNum[0]=0;
for(int i=1;i<len;i++){
for(int j=0;j<=i;j++){
string subs = s.substr(j,i-j+1);
if(palindrome[j][i-j+1]){
if(j==0){
cutNum[i]=0;
}else{
if(cutNum[i]>cutNum[j-1]+1)
cutNum[i] = cutNum[j-1]+1;
}
} }
}
return cutNum[len-1];
}
bool is_palindrome(string s){
if(s.length() <= 1)
return true;
else{
for(int i=0;i<s.length()/2;i++){
if(s[i]!=s[s.length()-i-1]){
return false;
}
}
}
return true; }
};
int main(){
Solution s;
cout<< s.minCut("abv"); return 0;
}

leetcode回文子串拆分-最小拆分次数的更多相关文章

  1. LeetCode(5):最长回文子串

    Medium! 题目描述: 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 长度最长为1000. 示例: 输入: "babad" 输出: "bab&quo ...

  2. 求最长回文子串 - leetcode 5. Longest Palindromic Substring

    写在前面:忍不住吐槽几句今天上海的天气,次奥,鞋子里都能养鱼了...裤子也全湿了,衣服也全湿了,关键是这天气还打空调,只能瑟瑟发抖祈祷不要感冒了.... 前后切了一百零几道leetcode的题(sol ...

  3. LeetCode:Longest Palindromic Substring 最长回文子串

    题目链接 Given a string S, find the longest palindromic substring in S. You may assume that the maximum ...

  4. LeetCode之“字符串”:最长回文子串

    题目要求: 给出一个字符串(假设长度最长为1000),求出它的最长回文子串,你可以假定只有一个满足条件的最长回文串.例如,给出字符串 "abcdzdcab",它的最长回文子串为 & ...

  5. LeetCode刷题-005最长回文子串

    给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为1000.示例 1:输入: "babad"输出: "bab"注意: "ab ...

  6. python练习 之 实践出真知 中心扩展法求最大回文子串 (leetcode题目)

    1 问题,给定一个字符串,求字符串中包含的最大回文子串,要求O复杂度小于n的平方. 首先需要解决奇数偶数的问题,办法是:插入’#‘,aba变成#a#b#a#,变成奇数个,aa变成#a#a#,变成奇数个 ...

  7. LeetCode:最长回文子串【5】

    LeetCode:最长回文子串[5] 题目描述 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为1000. 示例 1: 输入: "babad" 输出: ...

  8. 转载:LeetCode:5Longest Palindromic Substring 最长回文子串

    本文转自:http://www.cnblogs.com/TenosDoIt/p/3675788.html 题目链接 Given a string S, find the longest palindr ...

  9. LeetCode.5-最长回文子串(Longest Palindromic Substring)

    这是悦乐书的第342次更新,第366篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Medium级别的第3题(顺位题号是5).给定一个字符串s,找到s中最长的回文子字符串. 您可以假设s ...

随机推荐

  1. js注册检测 用户名、密码、手机号、邮箱

    请输入电话号码:<input name="" type="text" id="telphone" value="" ...

  2. NotePad++ 快捷键中文说明

    Ctrl-H 打开Find / Replace 对话框 Ctrl-D 复制当前行 Ctrl-L 删除当前行 Ctrl-T 上下行交换 F3 找下一个 Shift-F3 找上一个 Ctrl-Shift- ...

  3. QNX简介<转载>

     QNX QNX是由QNX软件系统有限公司开发的实时操作系统. http://blog.csdn.net/happyhell/article/details/7087199 基本特征 * QNX是一个 ...

  4. PHP 页面跳转到另一个页面的几种方法分享

    如何在 PHP 中从一个页面重定向到另外一个页面呢?今天 清源 为大家列举出了三种办法,供大家来参考. 一.用HTTP头信息  也就是用PHP的HEADER函数.PHP里的HEADER函数的作用就是向 ...

  5. net core与golang web

    Asp.net core与golang web简单对比测试 最近因为工作需要接触了go语言,又恰好asp.net core发布RC2,就想简单做个对比测试. 下面是测试环境: CPU:E3-1230 ...

  6. QFrame好像是万能的(可以随意画线,或者图片,放在其它元素之间做点缀,还可OnClick)

    QFrame *fr2=new QFrame(this); fr2->setGeometry(0,140,90,40); fr2->setStyleSheet("backgrou ...

  7. Fragment与FragmentActivity通信封装

    在项目里面会经常用到Fragment与FragmentActivity,比如Fragment之间的界面切换与Fragment之间的值传递等等,为了方便起见我把Fragment和FragmentActi ...

  8. 1.0.3-学习Opencv与MFC混合编程之---打开本地摄像头

    源代码:http://download.csdn.net/detail/nuptboyzhb/3961643 版本1.0.3新增内容 打开摄像头 Ø 新建菜单项,Learning OpenCV——&g ...

  9. javascript 交互取值

    var publicClassName; var classIdInMemory = { lastVal: publicClassName, set:function(x){ if(x != &quo ...

  10. linux中段错误的处理

    在 Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多.花费时间最长的问题就是著名的“段错误”(Segmentation Fau ...