大佬救命,这段代码我看了2小时都没看懂
题目:
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例2:
输入: "cbbd"
输出: "bb"
代码如下:
char * longestPalindrome(char * s){
int N = strlen(s), start = 0, len = 0;
for (int i = 0; i < N; i++) {
int left = i - 1, right = i + 1;
while (left >= 0 && right < N && s[left] == s[right]){
left--; right++;
}
if (right - left - 1 > len) {
start = left + 1;
len = right - left - 1;
}
}
for (int i = 0; i < N; i++) {
int left = i, right = i + 1;
while (left >=0 && right < N && s[left] == s[right]) {
left--, right++;
}
if (right - left - 1 > len) {
start = left + 1;
len = right - left - 1;
}
}
s[start + len] = '\0';
return s + start;
}
这是LeetCode上的题目,看了很多题解也没看懂。求大佬帮我逐行逐句理清这个代码的思路。