题解 | #最长回文子串#
最长回文子串
https://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af
中心扩散法,时间复杂度:O(n*n),空间复杂度:O(1)
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param A string字符串
* @return int整型
*/
#include <string.h>
int getLongestPalindrome(char* A ) {
// write code here
int len = strlen(A);
int max = 0;
if (len == 1) {
return 1;
}
for (int i = 0; i < len; i++) {
//奇数回文
int m = i ; //左侧扩散
int n = i ; //右侧扩散
while (m >= 0 && n < len) {
if (A[m] == A[n]) {
m--;
n++;
}else {
break;
}
}
if (max < (n - m) - 1) {
max = (n - m) - 1;
}
//偶数回文
m = i; //左侧扩散
n = i + 1; //右侧扩散
while (m >= 0 && n < len) {
if (A[m] == A[n]) {
m--;
n++;
}
else {
break;
}
}
if (max < (n - m) - 1) {
max = (n - m) - 1;
}
}
return max;
}
查看22道真题和解析
