给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。

返回符合要求的最少分割次数。

示例:

输入: "aab"
输出: 1
解释: 进行一次分割就可将 s 分割成 ["aa","b"] 这样两个回文子串。

思路:dp[i]代表前i个分割最小数,如果本身就是回文,那么dp[i]=0,否则它可以和任意比i小的起点组成字符串,某个字符串如果是回文,它的起点记为j,那么dp[i]就可能等于dp[j] + 1,也就是到为止的最优解加上刚发现的回文串。而最优解就是这些答案中最小的,dp[i] = Math.min(dp[i], dp[j] + 1);。

当然,检查是否是回文串是很耗时的,可以用马拉车来预先算出,这里懒得找了。

public class Solution {public int minCut(String s) {int len = s.length();if (len < 2) return 0;int[] dp = new int[len];for (int i = 0; i < len; i++) dp[i] = i;for (int i = 1; i < len; i++) {if (checkPalindrome(s, 0, i)) {dp[i] = 0;}else{for (int j = 0; j < i; j++)if (checkPalindrome(s, j + 1, i))dp[i] = Math.min(dp[i], dp[j] + 1);}}return dp[len - 1];}private boolean checkPalindrome(String s, int left, int right) {while (left < right) {if (s.charAt(left) != s.charAt(right)) return false;left++;right--;}return true;}
}

leetcode132. 分割回文串 II相关推荐

  1. leetcode132. 分割回文串 II(dp)

    给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文. 返回符合要求的 最少分割次数 . 示例 1: 输入:s = "aab" 输出:1 解释:只需一次分割就可将 s ...

  2. 132. 分割回文串 II

    链接:132. 分割回文串 II 题解:https://leetcode-cn.com/problems/palindrome-partitioning-ii/solution/xiang-tong- ...

  3. LeetCode 132. 分割回文串 II(DP)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串. 返回符合要求的最少分割次数. 示例: 输入: "aab" 输出: ...

  4. 【数据结构与算法】之深入解析“分割回文串II”的求解思路与算法示例

    一.题目要求 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文,返回符合要求的最少分割次数. 示例 1: 输入:s = "aab" 输出:1 解释:只需一次分割就 ...

  5. LeetCode 1278. 分割回文串 III

    截止到目前我已经写了 600多道算法题,其中部分已经整理成了pdf文档,目前总共有1000多页(并且还会不断的增加),大家可以免费下载 下载链接:https://pan.baidu.com/s/1hj ...

  6. Suzy找到实习了吗 Day27 | 回溯进行中:39. 组合总和,40. 组合总和 II,131.分割回文串

    39. 组合总和 题目 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 , ...

  7. LeetCode-笔记-131. 分割回文串

    LeetCode-笔记-131. 分割回文串 131. 分割回文串 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 .返回 s 所有可能的分割方案. 回文串 是正着读和反着读都 ...

  8. 【算法】双指针算法 ( 有效回文串 II )

    算法 系列博客 [算法]刷题范围建议 和 代码规范 [算法]复杂度理论 ( 时间复杂度 ) [字符串]最长回文子串 ( 蛮力算法 ) [字符串]最长回文子串 ( 中心线枚举算法 ) [字符串]最长回文 ...

  9. 怎么判断一个字符串的最长回文子串是否在头尾_LeetCode 第 131 号问题:分割回文串...

    题目来源于 LeetCode 上第 131 号问题:分割回文串.题目难度为 Medium,目前通过率为 45.8% . 题目描述 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串. 返 ...

最新文章

  1. RDKit | 基于Ward方法对化合物进行分层聚类
  2. 【Unity3D】 KeyCode 键码
  3. python库pickle的用法
  4. block关键字的使用
  5. 强大的Mockito测试框架(转)
  6. ad10怎么挖铺的铜_一个西北阴阳的诡异经历(五六):镇兽铜虎
  7. 通过ABAP代码判断当前系统类型,BYD还是S4 OP还是S4 Cloud
  8. 待办事项桌面插件_让浏览器重获整洁——标签页管理插件:OneTabOneTab PlusToby...
  9. Sonar6.0应用之一:基于centos7.2安装
  10. Shell编程: Shell 变量
  11. 【hiho挑战赛24 ABC】贪心和期望dp惨烈的后缀自动机
  12. DFS 事件id 2104 2004 报错
  13. nginx + tomcat + redis 部署项目,解决session共享问题。
  14. CentOS系统里如何正确取消或者延长屏幕保护自动锁屏功能(图文详解)
  15. 【CNN】四张图彻底搞懂CNN反向传播算法(通俗易懂)
  16. 机器学习第2课:单变量线性回归(Linear Regression with One Variable)
  17. 终极算法【2】——终极算法
  18. 求两个数最大公因数(直接求、辗转相除法)、最小公倍数
  19. win7计算机怎么找管理员,win7如何获得管理员权限?
  20. 借贷管理系统-初审阶段

热门文章

  1. java io 文件路径_如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径...
  2. mysql insert 不需要日志_详解MySQL|你不知道的新特性-8.0错误日志增强
  3. java高级mysql面试题_Java高级面试题
  4. DNW应用程序错误,DNW错误问题解决
  5. android jni release,Android NDK 设置编译模式debug和release
  6. Web——Request转发和Response重定向
  7. linux 故障注入_用软件中断实现的Linux内核故障注入方法
  8. LSGO软件技术团队2015~2016学年第十一周(1109~1115)总结
  9. 【转】带你玩转Visual Studio——03.带你了解VC++各种类型的工程
  10. 第十四节:Asp.Net Core WebApi生成在线文档-第十九节