下面是一个使用C语言实现查找最长回文子串的例子:
#include <stdio.h>
#include <string.h>
int expandAroundCenter(char *s, int left, int right) {
int len = strlen(s);
while (left >= 0 && right < len && s[left] == s[right]) {
left--;
right++;
}
return right - left - 1;
}
char *longestPalindrome(char *s) {
if (s == NULL || strlen(s) < 1) {
return "";
}
int start = 0, end = 0;
for (int i = 0; i < strlen(s); i++) {
int len1 = expandAroundCenter(s, i, i);
int len2 = expandAroundCenter(s, i, i + 1);
int len = len1 > len2 ? len1 : len2;
if (len > end - start) {
start = i - (len - 1) / 2;
end = i + len / 2;
}
}
char *result = (char *)malloc((end - start + 2) * sizeof(char));
strncpy(result, s + start, end - start + 1);
result[end - start + 1] = '#include <stdio.h>
#include <string.h>
int expandAroundCenter(char *s, int left, int right) {
int len = strlen(s);
while (left >= 0 && right < len && s[left] == s[right]) {
left--;
right++;
}
return right - left - 1;
}
char *longestPalindrome(char *s) {
if (s == NULL || strlen(s) < 1) {
return "";
}
int start = 0, end = 0;
for (int i = 0; i < strlen(s); i++) {
int len1 = expandAroundCenter(s, i, i);
int len2 = expandAroundCenter(s, i, i + 1);
int len = len1 > len2 ? len1 : len2;
if (len > end - start) {
start = i - (len - 1) / 2;
end = i + len / 2;
}
}
char *result = (char *)malloc((end - start + 2) * sizeof(char));
strncpy(result, s + start, end - start + 1);
result[end - start + 1] = '\0';
return result;
}
int main() {
char *s = "babad";
char *result = longestPalindrome(s);
printf("Longest Palindromic Substring: %s\n", result);
free(result);
return 0;
}
';
return result;
}
int main() {
char *s = "babad";
char *result = longestPalindrome(s);
printf("Longest Palindromic Substring: %s\n", result);
free(result);
return 0;
}
在上面的代码中,我们定义了一个expandAroundCenter
函数来查找以某个中心展开的回文子串的长度。然后我们遍历字符串s
,以每个字符为中心向两边扩展,分别计算出奇数长度和偶数长度的回文子串的长度,找出最长的回文子串并返回。最后在main
函数中调用longestPalindrome
函数来查找最长的回文子串并输出结果。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/1007716.html