|
1 | 1 |
|
2 | 2 |
|
3 | | -char *longestPalindrome(char *s) { |
4 | | - int n = strlen(s); |
5 | | - if (n == 0) { |
6 | | - char *result = malloc(1); |
7 | | - result[0] = '\0'; |
8 | | - return result; |
9 | | - } |
| 3 | +char* longestPalindrome(char* s) { |
| 4 | + int n = strlen(s); |
| 5 | + if (n == 0) { |
| 6 | + char* result = malloc(1); |
| 7 | + result[0] = '\0'; |
| 8 | + return result; |
| 9 | + } |
10 | 10 |
|
11 | | - bool dp[n][n]; |
12 | | - memset(dp, 0, sizeof(dp)); |
| 11 | + bool dp[n][n]; |
| 12 | + memset(dp, 0, sizeof(dp)); |
13 | 13 |
|
14 | | - int start = 0, max_len = 1; |
| 14 | + int start = 0, max_len = 1; |
15 | 15 |
|
16 | | - for (int i = 0; i < n; i++) { |
17 | | - dp[i][i] = true; |
18 | | - } |
| 16 | + for (int i = 0; i < n; i++) { |
| 17 | + dp[i][i] = true; |
| 18 | + } |
19 | 19 |
|
20 | | - for (int i = 0; i < n - 1; i++) { |
21 | | - if (s[i] == s[i + 1]) { |
22 | | - dp[i][i + 1] = true; |
23 | | - start = i; |
24 | | - max_len = 2; |
| 20 | + for (int i = 0; i < n - 1; i++) { |
| 21 | + if (s[i] == s[i + 1]) { |
| 22 | + dp[i][i + 1] = true; |
| 23 | + start = i; |
| 24 | + max_len = 2; |
| 25 | + } |
25 | 26 | } |
26 | | - } |
27 | 27 |
|
28 | | - // Check for lengths > 2 |
29 | | - for (int len = 3; len <= n; len++) { |
30 | | - for (int i = 0; i < n - len + 1; i++) { |
31 | | - int j = i + len - 1; |
32 | | - if (s[i] == s[j] && dp[i + 1][j - 1]) { |
33 | | - dp[i][j] = true; |
34 | | - if (len > max_len) { |
35 | | - start = i; |
36 | | - max_len = len; |
| 28 | + // Check for lengths > 2 |
| 29 | + for (int len = 3; len <= n; len++) { |
| 30 | + for (int i = 0; i < n - len + 1; i++) { |
| 31 | + int j = i + len - 1; |
| 32 | + if (s[i] == s[j] && dp[i + 1][j - 1]) { |
| 33 | + dp[i][j] = true; |
| 34 | + if (len > max_len) { |
| 35 | + start = i; |
| 36 | + max_len = len; |
| 37 | + } |
| 38 | + } |
37 | 39 | } |
38 | | - } |
39 | 40 | } |
40 | | - } |
41 | | - char *result = malloc(max_len + 1); |
42 | | - strncpy(result, s + start, max_len); |
43 | | - result[max_len] = '\0'; |
44 | | - return result; |
| 41 | + char* result = malloc(max_len + 1); |
| 42 | + strncpy(result, s + start, max_len); |
| 43 | + result[max_len] = '\0'; |
| 44 | + return result; |
45 | 45 | } |
0 commit comments