国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

每天一道leetcode:516. 最長回文子序列(動態(tài)規(guī)劃&中等)

這篇具有很好參考價值的文章主要介紹了每天一道leetcode:516. 最長回文子序列(動態(tài)規(guī)劃&中等)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

今日份題目:

給你一個字符串 s ,找出其中最長的回文子序列,并返回該序列的長度。

子序列定義為:不改變剩余字符順序的情況下,刪除某些字符或者不刪除任何字符形成的一個序列。

示例1

輸入:s = "bbbab"
輸出:4
解釋:一個可能的最長回文子序列為 "bbbb" 。

示例2

輸入:s = "cbbd"
輸出:2
解釋:一個可能的最長回文子序列為 "bb" 。

提示

  • 1 <= s.length <= 1000

  • s 僅由小寫英文字母組成

題目思路

動態(tài)規(guī)劃,使用二維dp數(shù)組記錄[i,j]間的最大回文子序列長度。

開始的時候,我嘗試使用reverse ( s.begin ( ) , s.end ( ) )翻轉(zhuǎn)字符串判斷連續(xù)相同位置的最大長度,最后發(fā)現(xiàn)與這道題不同,這道題目允許跨某些字母滿足回文,所以放棄原來的想法,不過翻轉(zhuǎn)后再動態(tài)規(guī)劃或許也可以,歡迎感興趣的朋友試一下,評論區(qū)討論哦!

接下來繼續(xù)講這道題目的思路。

因為需要枚舉區(qū)間內(nèi)的最大長度,如果從前往后遍歷,開始的區(qū)間跨度太大,可以理解為第一次判斷就得出最后返回的結(jié)果,肯定是不對的,所以是從最后位置開始遍歷i,j就是i+1到最后。然后,回文要滿足兩頭的字母一樣,所以對遍歷出的每組i和j判斷字符是否相同,相同的話,就在原長度也就是i+1到j-1范圍內(nèi)的最大長度加上這兩個點的長度2;如果不同,當前點就更新為區(qū)間內(nèi)最大長度。最后返回0到長度-1范圍內(nèi)的最大長度即可。

接下來是比較關鍵和大家比較關心的狀態(tài)轉(zhuǎn)移方程:

if(i、j處的字符相同)
{
	dp[i][j]=dp[i+1][j-1]+2;//在原來長度的基礎上加上這兩個字符的長度
} 
else 兩頭的字符不同
{
	dp[i][j]=max(dp[i+1][j],dp[i][j-1]);//不需要加上這兩頭的字符,根據(jù)相鄰范圍的值更新
}

代碼

class Solution 
{
public:
    int longestPalindromeSubseq(string s) 
    {
        int n=s.size();
        int dp[2000][2000]={0};//表示[i,j]范圍內(nèi)的最長回文子序列的長度
        for(int i=n-1;i>=0;i--) 
        {
            dp[i][i]=1;//單獨一個字符,自己就是最長回文子序列
            char c1=s[i];
            for(int j=i+1;j<n;j++) 
            {
                char c2=s[j];
                if(c1==c2) //兩頭的字符相同
                {
                    dp[i][j]=dp[i+1][j-1]+2;//在原來長度的基礎上加上這兩個字符的長度
                } 
                else //兩頭的字符不同
                {
                    dp[i][j]=max(dp[i+1][j],dp[i][j-1]);//不需要加上這兩頭的字符
                }
            }
        }
        return dp[0][n-1];//找到[0,n-1]的整個字符串中的最長回文子序列長度
    }
};

提交結(jié)果

每天一道leetcode:516. 最長回文子序列(動態(tài)規(guī)劃&中等),動態(tài)規(guī)劃,leetcode,動態(tài)規(guī)劃,算法,職場和發(fā)展,c++,數(shù)據(jù)結(jié)構(gòu)

?歡迎大家在評論區(qū)討論,如有不懂的代碼部分,歡迎在評論區(qū)留言!文章來源地址http://www.zghlxwxcb.cn/news/detail-641248.html

到了這里,關于每天一道leetcode:516. 最長回文子序列(動態(tài)規(guī)劃&中等)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • leetcode 516. 最長回文子序列(JAVA)題解

    leetcode 516. 最長回文子序列(JAVA)題解

    題目鏈接 https://leetcode.cn/problems/longest-palindromic-subsequence/description/?utm_source=LCUSutm_medium=ip_redirectutm_campaign=transfer2china 目錄 題目描述: 暴力遞歸: 動態(tài)規(guī)劃: 給你一個字符串? s ?,找出其中最長的回文子序列,并返回該序列的長度。子序列定義為:不改變剩余字符順序的情況

    2024年02月13日
    瀏覽(20)
  • 647.回文子串 516.最長回文子序列

    647.回文子串 516.最長回文子序列

    力扣題目鏈接(opens new window) 給定一個字符串,你的任務是計算這個字符串中有多少個回文子串。 具有不同開始位置或結(jié)束位置的子串,即使是由相同的字符組成,也會被視作不同的子串。 示例 1: 輸入:“abc” 輸出:3 解釋:三個回文子串: “a”, “b”, “c” 示例 2: 輸入

    2024年01月19日
    瀏覽(26)
  • 算法刷題|647.回文子串、516.最長回文子序列

    算法刷題|647.回文子串、516.最長回文子序列

    題目:給你一個字符串 s ,請你統(tǒng)計并返回這個字符串中 回文子串 的數(shù)目。 回文字符串 是正著讀和倒過來讀一樣的字符串。 子字符串 是字符串中的由連續(xù)字符組成的一個序列。 具有不同開始位置或結(jié)束位置的子串,即使是由相同的字符組成,也會被視作不同的子串。 d

    2024年02月17日
    瀏覽(54)
  • Day 57|647. 回文子串| 516.最長回文子序列

    ● 647. 回文子串 ● 516.最長回文子序列 ● 動態(tài)規(guī)劃總結(jié)篇 難

    2024年02月16日
    瀏覽(59)
  • 動態(tài)規(guī)劃-最長的回文序列

    動態(tài)規(guī)劃-最長的回文序列

    該題是lintcode上 667 · 最長的回文序列,該題的解題思路亦是參考了九章侯老師的解題思路給出。 給一字符串 s, 找出在 s 中的最長回文子序列的長度. 你可以假設 s 的最大長度為 1000. 輸入: “bbbab” 輸出: 4 解釋: 一個可能的最長回文序列為 “bbbb” 輸入: “bbbbb” 輸出:

    2024年02月09日
    瀏覽(24)
  • 代碼隨想錄 Day - 59|#647 回文字串|#516 最長回文子序列

    ● 647. 回文字串 ● 516. 最長回文子序列 給你一個字符串 s ,請你統(tǒng)計并返回這個字符串中回文子串的數(shù)目。 回文字符串是正著讀和倒過來讀一樣的字符串。 子字符串是字符串中的由連續(xù)字符組成的一個序列。 具有不同開始位置或結(jié)束位置的子串,即使是由相同的字符組成

    2024年02月07日
    瀏覽(40)
  • 動態(tài)規(guī)劃學習——最長回文子序列,讓字符串變成回文串的最小插入次數(shù)

    動態(tài)規(guī)劃學習——最長回文子序列,讓字符串變成回文串的最小插入次數(shù)

    1.題目 給你一個字符串? s ?,找出其中最長的回文子序列,并返回該序列的長度。 子序列定義為:不改變剩余字符順序的情況下,刪除某些字符或者不刪除任何字符形成的一個序列。 示例 1: 示例 2: 提示: 1 = s.length = 1000 s ?僅由小寫英文字母組成 2.題目接口 ?3.解題思路

    2024年02月04日
    瀏覽(18)
  • 最長回文子序列問題的原理與實現(xiàn):動態(tài)規(guī)劃的又一經(jīng)典應用

    回文是指一個正著讀和反著讀都一樣的字符串,比如 “aba” , “racecar” , “madam” 等?;匚挠性S多有趣的性質(zhì)和應用,比如在密碼學,生物信息學,數(shù)據(jù)壓縮等領域都有涉及。 那么,給定一個字符串,如何找出它的最長回文子序列呢?最長回文子序列是指從原字符串中刪

    2023年04月13日
    瀏覽(27)
  • 【算法|動態(tài)規(guī)劃No30】leetcode5. 最長回文子串

    【算法|動態(tài)規(guī)劃No30】leetcode5. 最長回文子串

    個人主頁:兜里有顆棉花糖 歡迎 點贊?? 收藏? 留言? 加關注??本文由 兜里有顆棉花糖 原創(chuàng) 收錄于專欄【手撕算法系列專欄】【LeetCode】 ??本專欄旨在提高自己算法能力的同時,記錄一下自己的學習過程,希望對大家有所幫助 ??希望我們一起努力、成長,共同進步。

    2024年02月08日
    瀏覽(24)
  • 【LeetCode動態(tài)規(guī)劃#14】子序列系列題(最長遞增子序列、最長連續(xù)遞增序列、最長重復子數(shù)組、最長公共子序列)

    【LeetCode動態(tài)規(guī)劃#14】子序列系列題(最長遞增子序列、最長連續(xù)遞增序列、最長重復子數(shù)組、最長公共子序列)

    力扣題目鏈接(opens new window) 給你一個整數(shù)數(shù)組 nums ,找到其中最長嚴格遞增子序列的長度。 子序列是由數(shù)組派生而來的序列,刪除(或不刪除)數(shù)組中的元素而不改變其余元素的順序。例如,[3,6,2,7] 是數(shù)組 [0,3,1,6,2,2,7] 的子序列。 示例 1: 輸入:nums = [10,9,2,5,3,7,101,18] 輸出

    2024年02月01日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包