Skip to content

Commit 198fe87

Browse files
committed
Runtime: 1248 ms (Top 52.16%) | Memory: 34.60 MB (Top 50.8%)
1 parent 3a5351a commit 198fe87

File tree

1 file changed

+15
-11
lines changed

1 file changed

+15
-11
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
1+
// Runtime: 1248 ms (Top 52.16%) | Memory: 34.60 MB (Top 50.8%)
2+
13
class Solution:
24
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]

0 commit comments

Comments
 (0)