• Leetcode—5.最长回文子串【中等】


    2023每日刷题(三十五)

    Leetcode—5.最长回文子串

    在这里插入图片描述

    中心扩展法算法思想

    可以使用一种叫作“中心扩展法”的算法。由回文的性质可以知道,回文一定有一个中心点,从中心点向左和向右所形成的字符序列是一样的,并且如果字符串的长度为偶数的话,中心点在中间的两个字符的中间位置(不对应具体字符);如果是奇数的话,则中心点会在中间的字符上。

    实现代码

    class Solution {
    public:
        int findPalindrome(string s, int left, int right, int* start) {
            int len = s.size();
            while(left >= 0 && right <= len && s[left] == s[right]) {
                left--;
                right++;
            }
            left++;
            right--;
            *start = left;
            return right - left + 1;
        }
    
        string longestPalindrome(string s) {
            int n = s.size();
            int i = 0;
            int len1 = 0, len2 = 0;
            int start1 = 0, start2 = 0;
            int sta = 0;
            int maxlen = 0;
            while(i < n) {
                len1 = findPalindrome(s, i, i, &start1);
                len2 = findPalindrome(s, i, i + 1, &start2);
                if(len1 > maxlen || len2 > maxlen) {
                    if(len1 > len2) {
                        sta = start1;
                        maxlen = len1;
                    } else {
                        sta = start2;
                        maxlen = len2;
                    }
                }
                i++;
            }
            return s.substr(sta, maxlen);
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    运行结果

    在这里插入图片描述

    复杂度分析

    ● 时间复杂度:枚举所有中心点的时间复杂度为O(n),findPalindrome函数的时间复杂度仍然是O(n),因此总的时间复杂度为 O ( n 2 ) O(n^2) O(n2),其中n为字符串的长度
    ● 空间复杂度:O(1)

    之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

  • 相关阅读:
    Redis学习第九天
    【UV打印机】波形开发-验收技术指标(三)
    Protocol Buffers详解
    vue3的getCurrentInstance获取组件实例踩坑记录
    I2C总线实现逻辑
    springboot+vue+elementui外卖点餐系统骑手,商家
    【感性认识】嵌入式开发有何不同
    Vue 开发必须知道的 36 个技巧【近1W字】
    我写的 Python 代码,同事都说好
    DDE图像增强
  • 原文地址:https://blog.csdn.net/qq_44631615/article/details/134503285