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

浙公网安备 33010602011771号