File tree Expand file tree Collapse file tree 3 files changed +70
-0
lines changed
0516_longest_palindromic_subsequence Expand file tree Collapse file tree 3 files changed +70
-0
lines changed Original file line number Diff line number Diff line change
1
+ all :
2
+ gcc -O1 -o test lps.c
Original file line number Diff line number Diff line change
1
+ #include <stdio.h>
2
+ #include <stdlib.h>
3
+
4
+
5
+ static inline int max (int a , int b )
6
+ {
7
+ return a > b ? a : b ;
8
+ }
9
+
10
+ int longestPalindromeSubseq (char * s )
11
+ {
12
+ int i , j , k ;
13
+ int len = strlen (s );
14
+ int * * dp = malloc (len * sizeof (int * ));
15
+ for (i = 0 ; i < len ; i ++ ) {
16
+ dp [i ] = malloc (len * sizeof (int ));
17
+ memset (dp [i ], 0 , len * sizeof (int ));
18
+ dp [i ][i ] = 1 ;
19
+ }
20
+
21
+ for (k = 1 ; k < len ; k ++ ) {
22
+ for (i = 0 ; i < len - k ; i ++ ) {
23
+ j = i + k ;
24
+ if (s [i ] == s [j ]) {
25
+ dp [i ][j ] = dp [i + 1 ][j - 1 ] + 2 ;
26
+ } else {
27
+ dp [i ][j ] = max (dp [i ][j - 1 ], dp [i + 1 ][j ]);
28
+ }
29
+ }
30
+ }
31
+ return dp [0 ][len - 1 ];
32
+ }
33
+
34
+ int main (int argc , char * * argv )
35
+ {
36
+ if (argc != 2 ) {
37
+ fprintf (stderr , "Usage: ./test s\n" );
38
+ exit (-1 );
39
+ }
40
+
41
+ printf ("%d\n" , longestPalindromeSubseq (argv [1 ]));
42
+ return 0 ;
43
+ }
Original file line number Diff line number Diff line change
1
+ #include < bits/stdc++.h>
2
+
3
+ using namespace std ;
4
+
5
+ class Solution {
6
+ public:
7
+ int longestPalindromeSubseq (string s) {
8
+ int len = s.length ();
9
+ vector<int > dp (len, 1 );
10
+ // We have to use level traverse to reduce the dp table size
11
+ for (int i = len - 2 ; i >= 0 ; i--) {
12
+ int left_down = 0 ;
13
+ for (int j = i + 1 ; j < len; j++) {
14
+ int down = dp[j];
15
+ if (s[i] == s[j]) {
16
+ dp[j] = left_down + 2 ;
17
+ } else {
18
+ dp[j] = max (down, dp[j - 1 ]);
19
+ }
20
+ left_down = down;
21
+ }
22
+ }
23
+ return dp[len - 1 ];
24
+ }
25
+ };
You can’t perform that action at this time.
0 commit comments