【1040 25 回文串】 Longest Symmetric String

传送门

题意

给定一个包含空格的字符串 \(s\) ,求这个字符串的最长回文子串长度

数据范围

\(|s| \leq 1000\)

题解

  • 数据包含空格不能直接 cin
  • 枚举所有字符,以当前字符为中心,和以当前字符为空的中心左边第一个字符,维护偏移量分别扩展即可

Code

#include <bits/stdc++.h>
using namespace std;

int main() {
	string s; getline(cin, s);
	int ans = 0;
	for (int i = 0; i < s.size(); i++) {
		int delta = 0;
		while (i - delta >= 0 and i + delta < s.size() and s[i - delta] == s[i + delta]) {
			ans = max(ans, 1 + 2 * delta);
			delta++;
		}
		delta = 0;
		while (i - delta + 1 >= 0 and i + delta < s.size() and s[i - delta + 1] == s[i + delta]) {
			ans = max(ans, delta * 2);
			delta++;
		}
	}
	cout << ans;
}
posted @ 2021-02-21 16:15  Hyx'  阅读(42)  评论(0)    收藏  举报