Leetcode 5 Longest Palindromic Substring

来源:互联网 发布:ubuntu 卸载fcitx 编辑:程序博客网 时间:2024/05/17 04:50

Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.

Example:

Input: "babad"Output: "bab"Note: "aba" is also a valid answer.

Example:

Input: "cbbd"Output: "bb"

最长的回文序列,我觉得可以看成是中心对称的,但是分为奇数长度和偶数长度两种不同情况。

两种情况之下,都可以用双指针向两端移动,判断是否满足回文序列的要求。以不同的char作为回文中心点可以在每次的移动中

找到一个maxLen,遍历完所有的char之后,就可以找到max。同时记录下起点就行了。


public class Solution {    int begin = 0;    int maxLen = 0;    public String longestPalindrome(String s) {                if(s == null){            return null;        }                int length = s.length();                if(length <= 1){            return s;        }                for(int i = 0; i < length - 1; i++){            calculen(s,i,i);            calculen(s,i,i+1);        }                return s.substring(begin, begin + maxLen);            }            private void calculen(String s, int pointer1, int pointer2){        while(pointer1 >= 0 && pointer2 < s.length() && s.charAt(pointer1) == s.charAt(pointer2)){                      pointer1--;                pointer2++;                             }        if(maxLen < pointer2- pointer1 - 1){//这里还犯傻了,因为while结束的时候,在上一次执行的时候pointer1pointer2的值都是改变了的,所以是-2+1 = -1 啦            maxLen = pointer2 - pointer1 - 1;            begin = pointer1 + 1;        }    }}




0 0
原创粉丝点击