<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ?LeetCode刷題實(shí)戰(zhàn)132:分割回文串 II

          共 2273字,需瀏覽 5分鐘

           ·

          2020-12-26 11:13

          算法的重要性,我就不多說了吧,想去大廠,就必須要經(jīng)過基礎(chǔ)知識(shí)和業(yè)務(wù)邏輯面試+算法面試。所以,為了提高大家的算法能力,這個(gè)公眾號(hào)后續(xù)每天帶大家做一道算法題,題目就從LeetCode上面選 !

          今天和大家聊的問題叫做?分割回文串 II,我們先來看題面:
          https://leetcode-cn.com/problems/palindrome-partitioning-ii/

          Given a string s, partition s such that every substring of the partition is a palindrome.

          Return the minimum cuts needed for a palindrome partitioning of s.

          題意

          給定一個(gè)字符串 s,將 s 分割成一些子串,使每個(gè)子串都是回文串。
          返回符合要求的最少分割次數(shù)。


          樣例


          示例:

          輸入: "aab"
          輸出: 1
          解釋: 進(jìn)行一次分割就可將 s 分割成 ["aa","b"] 這樣兩個(gè)回文子串。


          解題

          https://blog.csdn.net/zhang_han666/article/details/110524143

          思路:動(dòng)態(tài)規(guī)劃
          定義dp[i-1]為子串s[0:i-1](前閉后閉)的最小分割次數(shù),推出dp[i]的轉(zhuǎn)移方程。
          • 首先,如果s[0:i]本身是一個(gè)回文串,那么不需要分割,dp[i] = 0

          • 如果s[0:i]不是回文串,那么我們需要枚舉以s[i]結(jié)尾的回文串,從1i的索引j,判斷s[j:i]是不是回文串,如果是,則dp[i]=dp[j-1]+1,即在前j-1個(gè)字符串的基礎(chǔ)上多一次切割。枚舉所有可能的j,取最小值。

          • 不可以逐次判斷是否是回文串,會(huì)超時(shí),因此回文串的判斷也采取動(dòng)態(tài)規(guī)劃的思想。如果一個(gè)字符串s[i:j]是回文串,那么其子串s[i+1:j-1]也是回文串。因此,dp[i][j]表示子串s[i:j]是否是回文串,我們枚舉字符串子串的長(zhǎng)度,再枚舉子串的起始位置,填充dp。


          class?Solution(object):
          ????def?minCut(self, s):
          ????????"""
          ????????:type s: str
          ????????:rtype: int
          ????????"""

          ????????l = len(s)
          ????????dpPart = [[False]*l for?_ in?range(l)]
          ????????dp = [i for?i in?range(l)]

          ????????# 判斷回文串,填充dpPart
          ????????# 枚舉子串長(zhǎng)度
          ????????for?length in?range(l):
          ????????????# 枚舉子串開始位置,length==0表示子串長(zhǎng)度為1
          ????????????for?i in?range(l):
          ????????????????j = i + length
          ????????????????if?j >= l:
          ????????????????????break
          ????????????????if?length == 0:
          ????????????????????dpPart[i][j] = True
          ????????????????elif?length == 1:
          ????????????????????dpPart[i][j] = (s[i] == s[j])
          ????????????????else:
          ????????????????????dpPart[i][j] = dpPart[i+1][j-1] and?(s[i] == s[j])

          ????????# 填充dp
          ????????for?i in?range(1, l):
          ????????????if?dpPart[0][i]:
          ????????????????dp[i] = 0
          ????????????????continue

          ????????????for?j in?range(1, i+1):
          ????????# 枚舉以s[i]結(jié)尾的回文串
          ????????????????if?(dpPart[j][i]):
          ????????????????????dp[i] = min(dp[i], dp[j - 1] + 1)

          ????????return?dp[l - 1]


          好了,今天的文章就到這里,如果覺得有所收獲,請(qǐng)順手點(diǎn)個(gè)在看或者轉(zhuǎn)發(fā)吧,你們的支持是我最大的動(dòng)力。

          上期推文:

          LeetCode1-120題匯總,希望對(duì)你有點(diǎn)幫助!
          LeetCode刷題實(shí)戰(zhàn)121:買賣股票的最佳時(shí)機(jī)
          LeetCode刷題實(shí)戰(zhàn)122:買賣股票的最佳時(shí)機(jī) II
          LeetCode刷題實(shí)戰(zhàn)123:買賣股票的最佳時(shí)機(jī) III
          LeetCode刷題實(shí)戰(zhàn)124:二叉樹中的最大路徑和
          LeetCode刷題實(shí)戰(zhàn)125:驗(yàn)證回文串
          LeetCode刷題實(shí)戰(zhàn)126:?jiǎn)卧~接龍 II
          LeetCode刷題實(shí)戰(zhàn)127:?jiǎn)卧~接龍
          LeetCode刷題實(shí)戰(zhàn)128:最長(zhǎng)連續(xù)序列
          LeetCode刷題實(shí)戰(zhàn)129:求根到葉子節(jié)點(diǎn)數(shù)字之和
          LeetCode刷題實(shí)戰(zhàn)130:被圍繞的區(qū)域
          LeetCode刷題實(shí)戰(zhàn)131:分割回文串


          瀏覽 52
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  精品人妻伦一二三区久久春菊成人漫画 | 欧美日韩精品一区 | 国产高清无码视频在线 | 精品久久久久久久久久久久久 | 男人天堂2024在线 |