中心扩展法(寻找最长循环子串)分奇偶

class Solution {
public:
	int find_str(int left,int right,string &s){
		 while(left>=0&&right<s.size()&&s[left]==s[right]){
		 	left--;
		 	right++;
		 }
		
		return right-left-1;//回文长度
		
	}
    string longestPalindrome(string s) {
        int n=s.size();
        if(n==0) return{};
        int start=INT_MAX;
        int maxlen=INT_MIN;
        for(int i=0;i<n;i++){
			int len1=find_str(i,i,s);
			int len2=find_str(i,i+1,s);
			int cur=max(len1,len2);
			if(cur>maxlen){
				maxlen=cur;
				start=start = i - (maxlen - 1) / 2;
			}
		}
		return s.substr(start,maxlen);
    }
};
posted @ 2024-12-11 22:41  Qacter  阅读(35)  评论(0)    收藏  举报