最大回文子串

tech2025-05-24  11

原文链接:https://blog.csdn.net/qq_31820761/article/details/90635480

#include <iostream> #include <string> using namespace std; string LongestPalindrome(string s) { int len = s.size(); if (len==0 || len==1) { return s; } int start = 0;//记录回文子串起始位置 int end = 0;//记录回文子串终止位置 int mlen = 0;//记录最大回文子串的长度 for (int i=0;i < len;i ++) { int len1 = ExpendAroundCenter(s,i,i); int len2 = ExpendAroundCenter(s,i,i+1); mlen = max(max(len1,len2),mlen); if (mlen>end-start+1) { start = i-(mlen-1)/2; end = i+mlen/2; } } return s.substr(start,mlen); } int ExpendAroundCenter(string s,int left,int right) { int L= left; int R= right; while (L>=0 && R < s.length() && s[R] == s[L]) { L--; R++; } return R - L -1; }
最新回复(0)