Write a function called LCS that accepts two sequences and returns the longest subsequence common to the passed in sequences.
Subsequence
A subsequence is different from a substring. The terms of a subsequence need not be consecutive terms of the original sequence.
Example subsequence
Subsequences of "abc" = "a", "b", "c", "ab", "ac", "bc" and "abc".
LCS examples
lcs( "abcdef" , "abc" ) => returns "abc"
lcs( "abcdef" , "acf" ) => returns "acf"
Subsequence
A subsequence is different from a substring. The terms of a subsequence need not be consecutive terms of the original sequence.
Example subsequence
Subsequences of "abc" = "a", "b", "c", "ab", "ac", "bc" and "abc".
LCS examples
lcs( "abcdef" , "abc" ) => returns "abc"
lcs( "abcdef" , "acf" ) => returns "acf"
lcs( "132535365" , "123456789" ) => returns "12356"
我的解法:
def lcs(x, y):
a=''
x_l=list(x)
for i in y:
if i in x_l:
a+=i
x_l[:(x_l.index(i)+1)]=[]
return a
其他解法:
def lcs(x, y):
res=[]
i=0
for item in y:
if item in x[i:]:
res+=[item]
i=x.index(item)+1
return "".join(res)