|
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