日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

leetcode132. 分割回文串 II(dp)

發布時間:2023/11/29 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode132. 分割回文串 II(dp) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

給你一個字符串 s,請你將 s 分割成一些子串,使每個子串都是回文。

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

示例 1:

輸入:s = “aab”
輸出:1
解釋:只需一次分割就可將 s 分割成 [“aa”,“b”] 這樣兩個回文子串。
示例 2:

輸入:s = “a”
輸出:0
示例 3:

輸入:s = “ab”
輸出:1

提示:

1 <= s.length <= 2000
s 僅由小寫英文字母組成

解題思路

先用一次dp算出回文子串的位置信息
第二次使用最長遞增子序列的思路,計算出最少的切割次數

代碼

class Solution {public int minCut(String s){int n=s.length();boolean[][] dp=new boolean[n][n];for (int i = n-1; i >=0; i--) {for (int i1 = i; i1 < n; i1++) {if(s.charAt(i)==s.charAt(i1)){if(i1-i+1>2)dp[i][i1]=dp[i+1][i1-1];elsedp[i][i1]=true;}}}int[] res=new int[n];Arrays.fill(res,Integer.MAX_VALUE);for (int i = 0; i < n; i++) {if(dp[0][i])//不用再切割{res[i]=0;}else {for(int j=0;j<i;j++)//遍歷一次前面可能的切割位置,找出最優的位置{if(dp[j+1][i])res[i]= Math.min(res[i],res[j]+1);}}}return res[n-1];} } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的leetcode132. 分割回文串 II(dp)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。