leetcode132. 分割回文串 II
给定一个字符串 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相关推荐
- leetcode132. 分割回文串 II(dp)
给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文. 返回符合要求的 最少分割次数 . 示例 1: 输入:s = "aab" 输出:1 解释:只需一次分割就可将 s ...
- 132. 分割回文串 II
链接:132. 分割回文串 II 题解:https://leetcode-cn.com/problems/palindrome-partitioning-ii/solution/xiang-tong- ...
- LeetCode 132. 分割回文串 II(DP)
文章目录 1. 题目 2. 解题 1. 题目 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串. 返回符合要求的最少分割次数. 示例: 输入: "aab" 输出: ...
- 【数据结构与算法】之深入解析“分割回文串II”的求解思路与算法示例
一.题目要求 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文,返回符合要求的最少分割次数. 示例 1: 输入:s = "aab" 输出:1 解释:只需一次分割就 ...
- LeetCode 1278. 分割回文串 III
截止到目前我已经写了 600多道算法题,其中部分已经整理成了pdf文档,目前总共有1000多页(并且还会不断的增加),大家可以免费下载 下载链接:https://pan.baidu.com/s/1hj ...
- Suzy找到实习了吗 Day27 | 回溯进行中:39. 组合总和,40. 组合总和 II,131.分割回文串
39. 组合总和 题目 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 , ...
- LeetCode-笔记-131. 分割回文串
LeetCode-笔记-131. 分割回文串 131. 分割回文串 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 .返回 s 所有可能的分割方案. 回文串 是正着读和反着读都 ...
- 【算法】双指针算法 ( 有效回文串 II )
算法 系列博客 [算法]刷题范围建议 和 代码规范 [算法]复杂度理论 ( 时间复杂度 ) [字符串]最长回文子串 ( 蛮力算法 ) [字符串]最长回文子串 ( 中心线枚举算法 ) [字符串]最长回文 ...
- 怎么判断一个字符串的最长回文子串是否在头尾_LeetCode 第 131 号问题:分割回文串...
题目来源于 LeetCode 上第 131 号问题:分割回文串.题目难度为 Medium,目前通过率为 45.8% . 题目描述 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串. 返 ...
最新文章
- RDKit | 基于Ward方法对化合物进行分层聚类
- 【Unity3D】 KeyCode 键码
- python库pickle的用法
- block关键字的使用
- 强大的Mockito测试框架(转)
- ad10怎么挖铺的铜_一个西北阴阳的诡异经历(五六):镇兽铜虎
- 通过ABAP代码判断当前系统类型,BYD还是S4 OP还是S4 Cloud
- 待办事项桌面插件_让浏览器重获整洁——标签页管理插件:OneTabOneTab PlusToby...
- Sonar6.0应用之一:基于centos7.2安装
- Shell编程: Shell 变量
- 【hiho挑战赛24 ABC】贪心和期望dp惨烈的后缀自动机
- DFS 事件id 2104 2004 报错
- nginx + tomcat + redis 部署项目,解决session共享问题。
- CentOS系统里如何正确取消或者延长屏幕保护自动锁屏功能(图文详解)
- 【CNN】四张图彻底搞懂CNN反向传播算法(通俗易懂)
- 机器学习第2课:单变量线性回归(Linear Regression with One Variable)
- 终极算法【2】——终极算法
- 求两个数最大公因数(直接求、辗转相除法)、最小公倍数
- win7计算机怎么找管理员,win7如何获得管理员权限?
- 借贷管理系统-初审阶段
热门文章
- java io 文件路径_如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径...
- mysql insert 不需要日志_详解MySQL|你不知道的新特性-8.0错误日志增强
- java高级mysql面试题_Java高级面试题
- DNW应用程序错误,DNW错误问题解决
- android jni release,Android NDK 设置编译模式debug和release
- Web——Request转发和Response重定向
- linux 故障注入_用软件中断实现的Linux内核故障注入方法
- LSGO软件技术团队2015~2016学年第十一周(1109~1115)总结
- 【转】带你玩转Visual Studio——03.带你了解VC++各种类型的工程
- 第十四节:Asp.Net Core WebApi生成在线文档-第十九节