Leetcode 5最長迴文子串

2022-06-23 17:39:15 字數 1274 閱讀 1675

給你一個字串 s,找到 s 中最長的迴文子串。

示例 1:

輸入:s = "babad"

輸出:"bab"

解釋:"aba" 同樣是符合題意的答案。

示例 2:

輸入:s = "cbbd"

輸出:"bb"

示例 3:

輸入:s = "a"

輸出:"a"

示例 4:

輸入:s = "ac"

輸出:"a"

首先嚐試使用暴力破解,時間複雜度為o(n^3)

class solution }}

return s.substring(left,max + left);

}private boolean ispalindrome(char ch,int left,int right)

while(left < right)

return true;

}}

使用動態規劃,時間複雜度o(n^2)

class solution 

for( int j = 1; j < len; j++)}}

return s.substring(start,start + max);

}}

使用動態規劃,時間複雜度o(n)

class solution 

int left = i -(p[i] + 1);

int right = i + (p[i] + 1);

while (left >= 0 && right < slen && str.charat(left) == str.charat(right))

if (i + p[i] > maxright)

if (p[i] > maxlen)

}return s.substring(start, start + maxlen);

}private string addboundaries(string s, char divide)

if (s.indexof(divide) != -1)

stringbuilder stringbuilder = new stringbuilder();

for (int i = 0; i < len; i++)

return stringbuilder.tostring();

}}

LeetCode131 分割回文串

給定一個字串 s,將s 分割成一些子串,使每個子串都是迴文串。返回 s 所有可能的分割方案。 1 class solution 9return true 10 11void backtracking string s int startindex 16for int i startindex i ...

leetcode 132 分割回文串 II

給定一個字串 s,將 s 分割成一些子串,使每個子串都是迴文串。 返回符合要求的最少分割次數。 示例 輸入 aab 輸出 1 解釋 進行一次分割就可將 s 分割成 aa b 這樣兩個迴文子串。 使用dfs完敗,字串中如果迴文串少且長度夠長,直接超時jj。 1 public class 132 1...

Leetcode 5 最長迴文子串

給定一個字串 s,找到 s 中最長的迴文子串。你可以假設 s 的最大長度為 1000。 示例 1 輸入 babad 輸出 bab 注意 aba 也是一個有效答案。 迴文串分奇數長度和偶數長度 1 特殊情況單獨處理 長度小於等於2 2 逐一對比子串對半分的元素 class solution def ...