题目是:

Given a string s,partition s such that every substring of the partition is a palindrome

Return tthe mininum cuts needed for a palindrome partitioning of s.

For example,given s="aab"

Return 1 since the  palindrome partition["aa","b"]could be produced using 1cut

我的思路:

用动态数组dp[i]来记录当i+1个字符时,需要的分隔次数。

当前i个字符是回文串时,则dp[i]=0

当前i个字符不是回文串时,则dp[i]先置为i(i+1个字符需要的最大分割次数)

这个时候的dp[i]的值就由前i个字符来决定,用j来分隔前i个字符

则dp[i]=min{dp[i],dp[j-1]+1(当前j个字符是回文串时)||dp[j-1]+1+i-j(当前j个字符不是回文串时)}

代码如下:

int minCut(string s){

  vector<int>dp(s,size(),s.size()-1)//默认值为字符串的最大分割次数

  for(int i=0;i<s.size();i++){

    dp[i]=Is_palindrome(s.substr(0,i+1))?0:i;//判断i+1个字符是不是回文串

    if(dp[i]==0)continue;//如果是则继续循环

    for(int j=1;j<=i;j++){

      if(Is_palindrome(s,substr(j,i+1-j))){

        dp[i]=min(dp[i],dp[j-1]+1);

      }

      else{

        dp[i]=min(dp[i],dp[j-1]+1+i-j);

      }

    }

  }

  return dp[s.size()-1];

}

//判断是否是回文串

bool Is_palindrome(string s){

  int begin=0;

  int end=s.size()-1;

  while(begin<end){

    if(s[begin]<s[end]){

      begin++;

      end--;

     }

    else break;

    if(begin>=end)return true;

    return false;

    }

}

做这条题目遇到的坑:

在判断回文串的时候,我首先想到的是STL中算法中的reverse函数,但是做的时候还是拿不准reverse函数的参数,于是采取了上面代码的方式,要是严格说起来的话也不是很难,清晰易懂,看来写代码不能拘泥于现成的东西。

leetcode刷题1--动态规划法回文串2的更多相关文章

  1. 【LEETCODE】72、分割回文串 III 第1278题

    package y2019.Algorithm.dynamicprogramming.hard; /** * @Auther: xiaof * @Date: 2019/12/11 08:59 * @D ...

  2. 【leetcode 简单】 第九十六题 最长回文串

    给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意: 假设字符串的长度不 ...

  3. [LeetCode] Longest Palindrome 最长回文串

    Given a string which consists of lowercase or uppercase letters, find the length of the longest pali ...

  4. [LeetCode] Palindrome Partitioning II 拆分回文串之二

    Given a string s, partition s such that every substring of the partition is a palindrome. Return the ...

  5. 从0打卡leetcode之day 6--最长回文串

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

  6. [LeetCode] 214. Shortest Palindrome 最短回文串

    Given a string s, you are allowed to convert it to a palindrome by adding characters in front of it. ...

  7. 牛客寒假算法基础集训营4 I题 Applese 的回文串

    链接:https://ac.nowcoder.com/acm/contest/330/I 来源:牛客网 自从 Applese 学会了字符串之后,精通各种字符串算法,比如--判断一个字符串是不是回文串. ...

  8. [leetcode]125. Valid Palindrome判断回文串

    Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignori ...

  9. leetcode.字符串.409最长回文串-Java

    1. 具体题目 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串.在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意: 假设 ...

  10. [LeetCode] Largest Palindrome Product 最大回文串乘积

    Find the largest palindrome made from the product of two n-digit numbers. Since the result could be ...

随机推荐

  1. Linux编译安装升级bash5.1

    线上服务器有次做漏洞扫描时,被扫描出有bash漏洞.平时还是比较少遇到有bash的漏洞,好在编译升级比较简单. 测试环境系统:CentOS.Ubuntu 一.下载官网最新bash版本 bash官网下载 ...

  2. 思科VTP协议(后面有配置案例)

    一.VTP相关理论介绍 1.1 VTP(VLAN trunking protocol)协议是用来在整个交换网络中分发和同步VLAN数据库的,是一个二层协议,思科私有协议. 1.2 VTP域是由一台或者 ...

  3. Tabluea、Smartbi可视化仪表盘创建流程图分享

    你知道Tableau.Smartbi在可视化仪表盘制作步骤上有何差异吗?下面一起来了解吧~ 根据上面的流程图我们可以了解到,不同于Smartbi是在同一界面即可完成的,Tableau是由很多个工作表组 ...

  4. 选择自助式BI平台的六大标准

    ​自助式BI平台面向的是不具备IT背景的业务分析人员,与传统BI相比更灵活且易于使用,而且一定程度上摆脱对IT部门的大幅度依赖,代表性的自助BI工具厂商如Tableau.思迈特的Smartbi Eag ...

  5. Docker容器里部署Apache+PHP+MariaDB+phpMyAdmin

    前面讲到了创建MariaDB,这次在前面的基础上搭建phpMyAdmin服务,以便友好的管理数据库MariaDB.MariaDB的docker独立出来,这样方便管理,易于扩展.这次我们基于Docker ...

  6. MethodImpl 特性

    5,MethodImpl 特性 此特性在 System.Runtime.CompilerServices 命名空间中,指定如何实现方法的详细信息. 内联函数使用方法可参考 https://www.wh ...

  7. 【C#】COM线程模型-套间 ApartmentState

    线程模式是微软的COM基础中的极其重要的概念.一定要吃透!初始一个STA套间实际上是相当于开了一个消息窗口,所有调用经此窗口过程调度到组件内. [STAThread] 可以理解成CoInitializ ...

  8. Codeforces Round #770 (Div. 2)D

    传送门 题目大意: 交互题, n ( 4 ≤ n ≤ 1000 ) n(4\leq n\leq1000) n(4≤n≤1000)个数字组成的数列 a 1 , a 2 , - , a n ( 0 ≤ a ...

  9. pandas模块篇(之三)

    今日内容概要 目标:将Pandas尽量结束 如何读取外部excel文件数据到DataFrame中 针对DataFrame的常用数据操作 索引与切片 操作DataFrame的字段名称 时间对象序列操作 ...

  10. pyqt(二)

    二.文本和图片 1. 文本控件 文本控件是QLabel from PyQt5.QtWidgets import QWidget,QApplication,QLabel from PyQt5.QtCor ...