ACwing 1524. 最长回文子串
因为这个题的数据范围只有1000,所以能O(n)枚举,枚举回文子串的中点,然后向两边延展,看看极限长度是多少,注意每次要区分奇数长度字串和偶数长度字串,两种的计算方式不一样。
#include <iostream>
#include <cstdio>
#include <cstdlib>
int main() {
std::string input;
std::getline(std::cin, input);
int ans = 0, j;
for(int i = 0; i < input.size(); i++) {
// 统计奇数长度
int l = i - 1, r = i + 1;
while(l >= 0 && r < input.size() && input[l] == input[r])
l--, r++;
ans = std::max(ans, r - l - 1);
// 统计偶数长度
l = i; r = i + 1;
while(l >= 0 && r < input.size() && input[l] == input[r])
l--, r++;
ans = std::max(ans, r - l - 1);
}
std::cout << ans << std::endl;
}
标签:std,int,1524,&&,ans,input,ACwing,回文
From: https://www.cnblogs.com/smartljy/p/18620955