动态规划(下篇)

第七题: 回文串的分割

分割回文串-ii_牛客题霸_牛客网

描述

给出一个字符串s,分割s使得分割出的每一个子串都是回文串

计算将字符串s分割成回文分割结果的最小切割数

例如:给定字符串s="aab",

返回1,因为回文分割结果["aa","b"]是切割一次生成的。

示例1

输入:"aab"

复制返回值:1

问题: 求s的最小的分割次数

状态F(i): s的前i个字符最小的分割次数

状态转移方程:

                情况1: 当F(i):(1,i)本身就是回文串时,不需要分割,返回0

                情况2: F9i)不是回文串,但是在 j < i && [ j+1, i ] 是回文串,则返回 min( F(i), F(j) + 1))

                比如 aab 中F(3) 不是回文串,但是 F(2) = aa  && [3] = b  则返回 F(2) + 1 

初始状态:  F(i) = i - 1 (就是把字符串切割成单个字符,所需 i - 1 步)

返回结果:  F(n)

public class Solution {
        //判断是否回文串
        public boolean isPal(String s, int start, int end){
            while(start < end){
                if(s.charAt(start) != s.charAt(end))
                    return false;
                ++start;
                --end;
            }
            return true;
        }
        public int minCut(String s) {
            int len = s.length();
            if(len == 0)
                return 0;
            int[] minCut = new int[len + 1];
            // F(i)初始化
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值