91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

使用C語言實現最長回文子串的查找

小樊
83
2024-04-26 17:30:58
欄目: 編程語言

下面是一個使用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] = '\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函數來查找最長的回文子串并輸出結果。

0
泰宁县| 思茅市| 安庆市| 弥渡县| 和平县| 东平县| 天镇县| 茶陵县| 新晃| 天全县| 大连市| 桂平市| 包头市| 南川市| 陇西县| 汾阳市| 漳平市| 永泰县| 宁阳县| 黄山市| 万安县| 常山县| 厦门市| 长春市| 武强县| 香港| 汉中市| 江安县| 新邵县| 霸州市| 盐津县| 桂阳县| 灵丘县| 上饶市| 长武县| 莱阳市| 鄯善县| 阜宁县| 富宁县| 临西县| 抚远县|