leetcode 5 最长回文子串
一、题目描述
二、解题思路
整体思路
可以用中心扩散法(双指针)来寻找最长回文子串。
具体思路
遍历字符串s,以当前位置为中心,采用双指针法进行扩散,寻找最长回文串。
注意:回文串长度可能为奇数,比如“bbabb”,也可能为偶数,比如“baab”,所以一个中心位置需 要用两种方式进行扩散。
三、代码实现
class Solution {
public:string longestPalindrome(string s) {//中心扩散法int len=0,begin=0;for(int i=0;i!=s.size();i++){//回文串长度为奇数int left=i,right=i;while(left>=0&&right<s.size()&&s[left]==s[right]){left--;right++;}if(len<right-left-1){len=right-left-1;begin=left+1;}//回文串长度为偶数left=i,right=i+1;while(left>=0&&right<s.size()&&s[left]==s[right]){left--;right++;}if(len<right-left-1){len=right-left-1;begin=left+1;} }return s.substr(begin,len);}
};