码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 猿创征文|最长回文子串-力扣


    猿创征文|最长回文子串

    • 【猿创征文】最长回文子串-力扣
      • ✌字符串快速入门
      • 🍉回文介绍
      • 💬最长回文子串问题
      • 🍵最长回文子串解决
      • ✍️ 算法实现

    【猿创征文】最长回文子串-力扣

    ✌字符串快速入门

    1. 基本操作对象
    • 字符串整体
    • 子串 : 字符串的每个单词。比如“Tom”就是“Tomcat”的子串。通常使用startWith判断开头前缀是否为子串
    1. 基本操作
    • 连接 :java中字符串不可变,通过+来进行连接
    • 比较 :.equals方法
    1. java中的问题
    • 默认字符串不可变,为让字符串可变:使用 toCharArray 将其转换为字符数组
    • 经常的连接字符串:最好使用一些数据结构,如 StringBuilder

    🍉回文介绍

    回文就是字符串的逆转显示和原来的一样,比如"abba"顺序读和逆序读并没有差别

    💬最长回文子串问题

    给你一个字符串 s,找到 s 中最长的回文子串。比如
    输入:s = “babad”
    输出:“bab”,其中"aba" 同样是符合题意的答案。
    输入:s = “cbbd”
    输出:“bb”

    🍵最长回文子串解决

    通过问题描述发现,回文子串分为奇数回文子串和偶数回文子串,而输入字符串并不能直接确定奇偶,因此需要对奇偶都进行判断。

    1. 对于奇数回文,采用中心扩散以中间一个点i为起点判断i的左边第一个和右边第一个是否相等。描述为:
      假设s[i]为中心,判断s[i-1]和s[i+1]是否相等,如果相等,继续判断i的左边第二和右边第二,以此类推
    2. 对于偶数回文,采用镜像对称,应该首先判断i和下一个点i+1是否相等,如果相等,也采用中心扩散,只不过是左边的第一个以i为起点,右边的第一个以i+1为起点。

    ✍️ 算法实现

    public String longestPalindrome(String s) {
            int len = s.length();
            int start = 0, end = 0, max_len = 0;
            //定义字符串的长度
            for (int i = 0; i < len; i++) {
            	//i为起点判断i的左边第一个和右边第一个是否相等
                int left = i;
                int right = i;
                //奇数回文"aba",中心回文
                while (left - 1 >= 0 && right + 1 < s.length() && s.charAt(left - 1) == s.charAt(right + 1)) {
                    left--;
                    right++;
                    if (right - left > max_len) {
                        max_len = right - left;
                        start = left;
                        end = right;
                    }
                }
                //偶数回文 "abba"
                //先判断和下一个是否相等,然后中心回文
                //左边的第一个以i为起点,右边的第一个以i+1为起点
                left = i;
                right = i + 1;
                while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) {
                    if (right - left > max_len) {
                        max_len = right - left;
                        start = left;
                        end = right;
                    }
                    left--;
                    right++;
                }
            }
            return s.substring(start, end + 1);
        }
    
    • 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

    在这里插入图片描述

    >如果觉得对你有帮助的话:
    > 👍 点赞,你的认可是我创作的动力!
    > ⭐️ 收藏,你的青睐是我努力的方向!
    > 👄 评论,你的意见是我进步的财富!
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    【国产MCU】-CH32V307-独立看门狗(IWDG)
    GoLand远程开发IDE:使用SSH远程连接服务器进行云端编程
    WebRTC学习笔记二 基础概念
    Filter快速入门、Filter执行流程、Filter使用细节、Listener概念、分类、ServletContextListener使用
    (未整理完)十月每日一题打卡
    【开源WebGIS】06-Openlayers+Vue 画点、线、面
    开发板连接WiFi时获取不到ip,且不断的报如下问题
    探索前沿:云计算环境下的网络安全策略与技术实践
    蓝桥杯嵌入式第二篇配置按键
    数据源作用以及spring配置数据源
  • 原文地址:https://blog.csdn.net/qq_41080854/article/details/126760063
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号