File tree 1 file changed +15
-11
lines changed
scripts/algorithms/L/Longest Palindromic Subsequence
1 file changed +15
-11
lines changed Original file line number Diff line number Diff line change
1
+ // Runtime : 1248 ms (Top 52.16 % ) | Memory : 34.60 MB (Top 50.8 % )
2
+
1
3
class Solution :
2
4
def longestPalindromeSubseq (self , s : str ) -> int :
3
- n = len (s )
4
- dp = [[0 for x in range (n )] for x in range (n )]
5
- for i in range (n ): dp [i ][i ] = 1 # Single length strings are palindrome
6
- for chainLength in range (2 , n + 1 ):
7
- for i in range (0 , n - chainLength + 1 ): # Discarding the lower triangle
8
- j = i + chainLength - 1
9
- if s [i ] == s [j ]:
10
- if chainLength == 2 : dp [i ][j ] = 2
11
- else : dp [i ][j ] = dp [i + 1 ][j - 1 ] + 2
12
- else : dp [i ][j ] = max (dp [i + 1 ][j ], dp [i ][j - 1 ])
13
- return dp [0 ][n - 1 ]
5
+ dp = [[0 for _ in range (len (s ))] for _ in range (len (s ))]
6
+ for k in range (1 , len (s ) + 1 ):
7
+ for i in range (len (s ) - k + 1 ):
8
+ j = k + i - 1
9
+ if i == j :
10
+ dp [i ][j ] = 1
11
+ elif i + 1 == j and s [i ] == s [j ]:
12
+ dp [i ][j ] = 2
13
+ elif s [i ] == s [j ]:
14
+ dp [i ][j ] = dp [i + 1 ][j - 1 ] + 2
15
+ else :
16
+ dp [i ][j ] = max (dp [i + 1 ][j ], dp [i ][j - 1 ])
17
+ return dp [0 ][- 1 ]
You can’t perform that action at this time.
0 commit comments