最長的迴文序列。
一個palinadrome是對一些字母,讀取相同的向前和向後爲非空字符串。迴文的實例是長度爲1,公民,賽車,和aibohphobia(恐懼迴文)的所有字符串。 給出一個efficent算法來找到一個給定的輸入字符串的子序列最長的迴文。例如,給定輸入「字符」,你的算法應該返回「caac」。
現在,我知道如何得到結果的長度。我怎樣才能得到結果的順序?
def mylongest(self, i, j):
if j - i <= 1:
return j-i
else:
if self.sequence[i] == self.sequence[j]:
return self.mylongest(i+1,j-1) + 2
else:
return max (self.mylongest(i+1, j), self.mylongest(i, j-1))
算法這是這裏討論:http://stackoverflow.com/questions/4790522/how-to-find-longest-palindromic-subsequence – ernie
是這樣的功課從這裏? www.cs.usfca.edu/~galles/cs673/hw7.btreedp.pdf? – ernie
實際上,'carac'比'caac'更長 – stark