問題:用lps(i,j)表示從字串第i個字元到第j個字元的最長回文子串行的長度,字串的長度為n,則要求lps(1,n),則:求給定輸入字串的最長回文子串行(子串行不要求連續)。
lps(i,j)=0; i>j;lps(i,j)=1; i==j;
lps(i,j)=lps(i+1,j-1)+2; str[i]==str[j];
lps(i,j)=max(lps(i+1,j),lps(i,j-1)); str[i]!=str[j];
// zuichanghuiwen2.cpp : 定義控制台應用程式的入口點。//#include "stdafx.h"
#include#includeusing namespace std;
int c[20][20];
void lps(string str)
}void rebuild(string str)
for (int i = mi; i < mi + m; i++)
cout << str[i];
}int main()
最長回文串演算法
總的來說,最長回文串演算法分為以下幾種。通過遍歷整個字串來說實現對最長回文串的查詢 首先乙個字串所有子串,個數為n2個,然後逐個判斷遍歷即可,演算法複雜度o n3 如下 def is palindrome s str length len s for i in range str length 2 ...
演算法 最長回文長度
問題描述 給定乙個字串,求它的最長回文子串的長度 連續長度或者不連續長度 回文串就是正著讀和反著讀都一樣的字串。問題一 判斷是否是回文 分析 根據定義進行判斷,首尾不一致,則就不是回文 bool ispalindrome string str,int begin,int end else retur...
最長回文串演算法
給定乙個字串找出最長回文字串範圍,例如abaabac,最長回文為abaaba 1 使用暴力的演算法需要o n 3 的複雜度,需要o n 2 的複雜度去運算字串所用的子串,然後使用o n 去判斷是否是回文串,從而定位最長的回文子串。cpp int lps bl char str,int len int...