当前位置: 首页 > article >正文

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);
    }
};

运行结果

在这里插入图片描述

复杂度分析

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

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


http://www.kler.cn/a/136584.html

相关文章:

  • 智慧公厕大数据驱动下的公共卫生管理与优化
  • GPU算力平台|在GPU算力平台部署Qwen-2通义千问大模型的教程
  • 反规范化带来的数据不一致问题的解决方案
  • 【设计模式-2】23 种设计模式的分类和功能
  • 根据docker file 编译镜像
  • RK3562编译Android13 ROOT固件教程,触觉智能开发板演示
  • 印刷企业实施MES管理系统需要哪些硬件设施
  • 第八部分:JSP
  • gitlab环境准备
  • Windows本地搭建rtmp推流服务
  • ROS参数服务器(Param):通信模型、Hello World与拓展
  • ros2工作空间
  • CentOS7安装部署Kafka with KRaft
  • react重要知识点(面经)
  • 图像分割方法
  • Redis常用的八种场景
  • Java Enumeration 接口
  • Spark---介绍及安装
  • 【LeetCode:2216. 美化数组的最少删除数 | 贪心】
  • 【opencv】debug报错HEAP CORRUPTION DETECTED
  • ChatGPT + DALL·E 3
  • 【Java】volatile-内存可见性问题
  • 云原生周刊:Istio 1.20.0 发布 | 2023.11.20
  • 图的基础知识(数据结构)
  • buildadmin+tp8表格操作(5)自定义组装搜索的查询
  • Linux驱动开发——块设备驱动