java 最長迴文子串
給定一個字串 s,找到 s 中最長的迴文子串。你可以假設 s 的最大長度為 1000。
示例 1:
輸入: "babad"
輸出: "bab"
注意: "aba" 也是一個有效答案。
示例 2:
輸入: "cbbd"
輸出: "bb"
解答
public class LongPlalindrome {
public String findPla(String s, int left, int right) {
while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) {
//如果left>0且right<字串s的長度並且字串的left和right位置的字元一樣,
//left左移,right右移
left--;
right++;
}
//跳出迴圈時,left和right都不符合條件了,substring()方法是左閉右開區間[left,right)
//所以left+1,而right不用變
return s.substring(left+1, right);
}
public String longestPalindrome(String s) {
int maxLen = 0; //記錄最大長度
String oldStr = null; //記錄最長子迴文字串
for(int i = 0;i<s.length();i++) {
String str1 = findPla(s, i, i); //迴文字元中間一個字元
String str2 = findPla(s, i, i+1); //迴文字元中間兩個字元相同,如abba
String newStr = str1.length()>str2.length()?str1:str2; //得到較長的子串
if(maxLen<newStr.length()) { //如果新的迴文子串長度大於原來的長度,重新整理最長迴文字串
maxLen = newStr.length();
oldStr = newStr;
}
}
return oldStr;
}
}
相關文章
- 5. 最長迴文子串
- LeetCode 5.最長迴文子串LeetCode
- 最長迴文子串 -- 三種解答
- 演算法-兩最長迴文子串演算法
- LeetCode-5. 最長迴文子串(Manacher)LeetCode
- Leetcode[字串] 5. 最長迴文子串LeetCode字串
- 每日一算--最長迴文子串
- [動態規劃] 六、最長迴文子串動態規劃
- 演算法之字串——最長迴文子串演算法字串
- 最長迴文子串你學會了嗎?
- LeetCode題集-5 - 最長迴文子串(一)LeetCode
- leedcode-最長迴文串
- LeetCode - 409 - 最長迴文串LeetCode
- 1203- 最長迴文串
- Leetcode5: Longest Palindromic Substring(最長迴文子串)LeetCode
- 每日一道 LeetCode (48):最長迴文子串LeetCode
- Amazon面試題:尋找最長迴文子串面試題
- 淺談最長迴文子串求法——字串雜湊字串
- 程式碼隨想錄day46 || 647 迴文子串, 516 最長迴文子序列
- 最長子串
- 每天一道演算法題:最長迴文子串演算法
- LeetCode題集-5 - 最長迴文子串之馬拉車(二)LeetCode
- lc1771 由子序列構造的最長迴文串的長度
- 最長上升子串
- 程式碼隨想錄演算法訓練營 | 647. 迴文子串,516.最長迴文子序列演算法
- L2-008 最長對稱子串【最長迴文字串】字串
- java無重複字元的最長子串Java字元
- lCS(最長公共子串)
- LeetCode516. 最長迴文子序列LeetCode
- 程式碼隨想錄演算法訓練營day46| 647. 迴文子串 516.最長迴文子序列演算法
- 最長迴文子序列(不連續) 可輸出迴文序列
- 【leetcode】【java】【3、無重複字元的最長子串】LeetCodeJava字元
- 程式碼隨想錄演算法訓練營第五十七/天 | 516. 最長迴文子序列,647. 迴文子串演算法
- 線性dp:最長公共子串
- 從0打卡leetcode之day 6--最長迴文串LeetCode
- 線性dp:LeetCode516 .最長迴文子序列LeetCode
- leetcode 解題 5. 最長迴文子串 python@ 官解,暴力法,動態法,manacher 法LeetCodePython
- 無重複字元的最長子串字元