最長回文子串 力扣5

2021-10-08 20:33:33 字數 1030 閱讀 4324

給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。

示例 1:

輸入: "babad"

輸出: "bab"

注意: "aba" 也是乙個有效答案。

示例 2:

輸入: "cbbd"

輸出: "bb"

利用回文字串的特點:正著讀和反著讀都是一樣的,所以首先把s反轉,利用i和j控制左右邊界,不斷從s中擷取子字串,這時需要理解反轉字串中對應i和j的關係,同時從反轉字串中進行擷取,進行比較。max表示當前字串的長度,如果新的子字串長度大於max才將替換。

public static string longestpalindrome(string s) }}

} return str;

}

本以為可以痛痛快快的通過測試,沒想到居然超時了!!!!

現在對上面**進行優化,優化1:因為j是從後向前迴圈的,所以當j-i>max時,替換當前str時,直接break,因為j是不斷的變小,所以就算以後出現了回文字串,也會比當前儲存的回文字串短。優化2:當len-i< max時,應該直接返回str,因為以後的子字串長度必然沒有str的長度長。

public static string longestpalindrome(string s) }}

} return str;

}

懷著忐忑的心情,再次測試用例,這次勉強通過了。看到執行結果看到速度還是可以的。

本題還有很多方法可以實現:暴力破解、動態規劃,我這次採用的是較為簡單的思路,希望有大佬可以指出還有什麼優化方式。

力扣 5 最長回文子串

題目 和647類似 給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 題解 方法一 面試題,要求最長只能一趟迴圈 中心擴散法 class solutio...

力扣題庫 5 最長回文子串

給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 從中心向兩端尋找,最終得到最大的字串 找單數最大,如為回文,則長度為 2 itmp 1 itmp so...

力扣5 最長回文子串(DP)

服了,一道dp寫一天,寫出來的 還巨爛 dp思路 正序串和逆序串找最長公共子串,注意需另外判斷子串是否為回文串,比如 abchkcba 這個很坑。dp陣列記錄正序串在i之前,逆序串在j之前的最長公共子串長度,公共子串以 i j 處的char作為結束的,所以當 chararr i adverse j ...