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;
}