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

查找最长回文子串

题目: 给你一个字符串 S, 找出字符串 S 中最长的回文子串

示例 1:

输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。

示例 2:

输入:s = "cbbd"
输出:"bb"

提示:

  • 1 <= s.length <= 1000
  • s 仅由数字和英文字母组成
public static String longestPalindrome(String s) {
        if (s == null || s.length() == 0) {
            return "";
        }
//         保存起始位置,测试了用数组似乎能比全局变量稍快一点
        int[] range = new int[2];
        char[] str = s.toCharArray();
        for (int i = 0; i < s.length(); i++) {
//             把回文看成中间的部分全是同一字符,左右部分相对称
//             找到下一个与当前字符不同的字符
            i = findLongest(str, i, range);
        }
        return s.substring(range[0], range[1] + 1);
    }

    public static int findLongest(char[] str, int low, int[] range) {
//         查找中间部分
        int high = low;
        while (high < str.length - 1 && str[high + 1] == str[low]) {
            high++;
        }
//         定位中间部分的最后一个字符
        int ans = high;
//         从中间向左右扩散
        while (low > 0 && high < str.length - 1 && str[low - 1] == str[high + 1]) {
            low--;
            high++;
        }
//         记录最大长度
        if (high - low > range[1] - range[0]) {
            range[0] = low;
            range[1] = high;
        }
        return ans;
    }


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

相关文章:

  • 基于单片机的数字电子秒表设计
  • ABAP 两个内表不同名称字段赋值的方法
  • 探索 Android Instant Apps:InstantAppInfo 的深入解析与架构设计
  • 从 TiDB 学习分布式数据库测试
  • 代码随想录算法训练营第五十天|图论基础|深度优先搜索理论基础|KM98.所有可达路径|广度优先搜索理论基础
  • 2024年1月4日蜻蜓hr人才招聘系统v1.1.7更新-正式版发布-客户端源代码开源发布供学习-本产品完成上线正式版-修复多个bug-优雅草果果|小无
  • 七种改进爬山算法的方法
  • 阿里巴巴Java 面试突击手册开源(涵盖 p5-p8 技术栈)
  • 数据结构排序
  • C. Line: 用扩展欧几里得算法求解整数解
  • 京东一面:MySQL 主备延迟有哪些坑?主备切换策略
  • TypyScript从入门到精通
  • 如何根据数据分布特性,选择合适的聚类算法,以优化K-Means算法对非球形分布数据的聚类效果?
  • 3blue1brow线代笔记
  • 使用 HEIC/HEIF 编码器将 HEIC 转换为 JPEG
  • SQLite 进阶:扩展功能与最佳实践
  • 深入解析爬虫中的算法设计:提升效率与准确度
  • Scala_【3】运算符
  • Upload-labs 第四关(学习记录)
  • Pytorch的自动求导模块
  • 【机器学习】交叉验证:数据世界的“多面侦探”
  • Linux实验报告15-添加系统调用
  • deepin环境下Docker实用指南:核心命令详解
  • 开发AI电子宠物 参考资料
  • 【Jboss/Windows】Tomcat 8 + JDK 8 升级为 Jboss eap 7 + JDK8
  • enzymejest TDD与BDD开发实战