对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
#include<vector>
#include <algorithm>
#include<iomanip>
#include<string>
using namespace std;
class Palindrome {
public:
int getLongestPalindrome(string A, int n) {
int max = 1;
for (int i = 0; i < n; i++)
{
int num = 1;
for (int left = i - 1, right = i + 1; left >= 0 && right < n; left--, right++)
{
if (A[left] == A[right])
{
num += 2;
}
else
{
break;
}
}
if (max < num)
{
max = num;
}
}
for (int i = 0; i < n; i++)
{
int num = 0;
for (int left = i, right = i + 1; left >= 0 && right < n; left--, right++)
{
if (A[left] == A[right])
{
num += 2;
}
else
{
break;
}
}
if (max < num)
{
max = num;
}
}
return max;
}
};
int main()
{
string A = "abc1234321ab";
string B = "baabccc";
Palindrome p;
cout<<p.getLongestPalindrome(A, 12)<<endl;
cout << p.getLongestPalindrome(B, 7) << endl;
return 0;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步