[LeetCode]中級演算法-最長迴文子串
阿新 • • 發佈:2019-02-18
最長迴文子串
給定一個字串 s,找到 s 中最長的迴文子串。你可以假設 s 的最大長度為1000。
示例 1:
輸入: "babad"
輸出: "bab"
注意: "aba"也是一個有效答案。
示例 2:
輸入: "cbbd"
輸出: "bb"
目前能想到的就是暴力解法,雙層for迴圈,依次以每一個字元作為子串的起始處,判斷每一個可能的子串是否為迴文子串
class Solution { public String longestPalindrome(String s) { if(s.length()<=1){ return s; } int len=s.length(); int maxLength=0; int startIndex=0; int endIndex=0; for (int i = 0; i < len; i++) { for (int j = i+1; j <len ; j++) { //當首尾字元相同時,進入迴文子串判斷程式 if(s.charAt(i)==s.charAt(j)){ int temp=j-i+1; if(temp>maxLength) { boolean flag = true; for (int k = 0; k <= (j-i) / 2; k++) { if (s.charAt(k + i) != s.charAt(j - k)) { flag = false; } } if(flag){ startIndex=i; endIndex=j; maxLength=temp; } } } } } s=s.substring(startIndex,endIndex+1); return s; } }