ACwing 1524. 最长回文子串

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;
}
posted @ 2024-12-21 17:03  Gold_stein  阅读(9)  评论(0编辑  收藏  举报