最长回文子串(蓝桥云课)
题目链接:8.最长回文子串 - 蓝桥云课 (lanqiao.cn)
代码如下
# include <iostream>
# include <cstring>
using namespace std;
int main()
{
string str;
getline(cin, str);
int res = 0;
for(int i = 0; i < str.length(); i++)
{
int l = i - 1, r = i + 1;
while(l >= 0 && r < str.length() && str[l] == str[r])
{
l--;
r++;
}
res = max(res, r - l - 1);
l = i, r = i + 1;
while(l >= 0 && r < str.length() && str[l] == str[r])
{
l--;
r++;
}
res = max(res, r - l - 1);
}
cout<<res<<endl;
return 0;
}
其实这个题目可以用动态规划,但是动态规划忘记了,在考研,好长时间没有刷动态规划题了,只能刷点基础的了。这个题目用的是中心散点法,也就是定义一个点,把这个点往两边散开。