human
Longest Repeated Subsequence | This function mainly returns LCS ( str , str ) with a condition that same characters at same index are not considered ..
This part of code is same as below post it fills dp [ ] [ ] https : www . geeksforgeeks . org / longest - repeating - subsequence / OR the code mentioned above.
This part of code finds the result string using dp [ ] [ ] Initialize result.
Traverse dp [ ] [ ] from bottom right.
If this cell is same as diagonally adjacent cell just above it , then same characters are present at str [ i - 1 ] and str [ j - 1 ] . Append any of them to result ..
Otherwise we move to the side that gave us maximum result ..
Since we traverse dp [ ] [ ] from bottom , we get result in reverse order ..
Driver Program"
How can the above be solved in Python?
assistant
#Here is code to longest Repeated Subsequence and the other steps required.
 def longestRepeatedSubSeq ( str ) :
	n = len ( str )
	dp = [ [ 0 for i in range ( n + 1 ) ] for j in range ( n + 1 ) ]
	for i in range ( 1 , n + 1 ) :
		for j in range ( 1 , n + 1 ) :
			if ( str [ i - 1 ] == str [ j - 1 ] and i != j ) :
				dp [ i ] [ j ] = 1 + dp [ i - 1 ] [ j - 1 ]
			else :
				dp [ i ] [ j ] = max ( dp [ i ] [ j - 1 ] , dp [ i - 1 ] [ j ] )
	res = ' '
	i = n
	j = n
	while ( i > 0 and j > 0 ) :
		if ( dp [ i ] [ j ] == dp [ i - 1 ] [ j - 1 ] + 1 ) :
			res += str [ i - 1 ]
			i -= 1
			j -= 1
		elif ( dp [ i ] [ j ] == dp [ i - 1 ] [ j ] ) :
			i -= 1
		else :
			j -= 1
	res = ' ' . join ( reversed ( res ) )
	return res
str = ' AABEBCDD '
print ( longestRepeatedSubSeq ( str ) )