給你一個字串 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 ...