• Java实现 LeetCode 132 分割回文串 II(二)


    132. 分割回文串 II

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

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

    示例:

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

    class Solution {
       public int minCut(String s) {
            if(s == null || s.length() <= 1)
                return 0;
            int len = s.length();
            int dp[] = new int[len];
            Arrays.fill(dp, len-1);
            for(int i = 0; i < len; i++){
                // 注意偶数长度与奇数长度回文串的特点
                mincutHelper(s , i , i , dp);  // 奇数回文串以1个字符为中心
                mincutHelper(s, i , i+1 , dp); // 偶数回文串以2个字符为中心
            }
            return dp[len-1];
        }
        private void mincutHelper(String s, int i, int j, int[] dp){
            int len = s.length();
            while(i >= 0 && j < len && s.charAt(i) == s.charAt(j)){
                dp[j] = Math.min(dp[j] , (i==0?-1:dp[i-1])+1);
                i--;
                j++;
            }
        }
    }
    
  • 相关阅读:
    【实战】如何实现滚轮时间的显示
    NSDate的常用用法
    UIDatePicker的简单用法
    NSDateFormatter相关整理
    UIPickerView
    回家任务
    addTarget:self 的意思是说,这个方法在本类中
    2020/2/25
    树上启发式合并
    题解
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13076152.html
Copyright © 2020-2023  润新知