leetcode-05 最长回文子串

题目描述:给你一个字符串 s,找到 s 中最长的回文子串。

解法一:中心扩散法

思想:令左右指针指向同一个元素,然后向两边扩散,并记录下最长长度 (L) 以及对应的起始位置 (index),最后返回字符串的子字符串

注意:在扩散之前,要排除所有的重复元素,从非重复元素开始扩散

           例如 " cabbad " 如果不考虑到中间的 " bb " 也属于回文字符串,就可能失去正确的答案。

class Solution {
    public String longestPalindrome(String s) {
        int index = 0;
        int L = 0;
        for (int i = 0; i < s.length(); i++) {
            int right = i;
            int left = i;
            int count = 0;
        
while(right < s.length() && s.charAt(left) == s.charAt(right)){ right ++; count ++; } left--; while(left <= right && left >= 0 && right < s.length()){ if(s.charAt(left) == s.charAt(right)){ count += 2; left --; right ++; }else{ break; } } if(count > L){ L = count; index = left+1; } } return s.substring(index, index+L); } }

 

posted @ 2023-03-18 21:17  洋山芋芋  阅读(27)  评论(0)    收藏  举报