IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> [C++] 回文:注意奇偶 -> 正文阅读

[数据结构与算法][C++] 回文:注意奇偶

5.最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串。

示例 1:

输入:s = “babad”
输出:“bab”
解释:“aba” 同样是符合题意的答案。
示例 2:

输入:s = “cbbd”
输出:“bb”
示例 3:

输入:s = “a”
输出:“a”
示例 4:

输入:s = “ac”
输出:“a”

提示:

1 <= s.length <= 1000
s 仅由数字和英文字母(大写和/或小写)组成

一开始没考虑偶数的情况,还用错了 substr


class Solution {
public:
    string longestPalindrome(string s) {
        int posL;
        int posM;
        int posR;
        int maxLength = 0;
        int lengthCache = 0;
        string longestString;
        for(posM = 0; posM < s.size(); ++posM)
        {
            posL = posM;
            posR = posM;

            while(true)
            {
                if(posL - 1 < 0||posR + 1 > s.size() - 1)
                    break;
                
                --posL;
                ++posR;

                if(s[posL] != s[posR])
                    break;
            }

            lengthCache = posR - posL + 1;
            if(maxLength < lengthCache)
            {
                maxLength = lengthCache;
                longestString = s.substr(posL,posR);
            }
        }

        return longestString;
    }
};

后来注意到奇偶就好了


class Solution {
public:
    string longestPalindrome(string s) {
        int posL, posM, posR, maxLength = 0, lengthCache = 0;
        string longestString;
        for(posM = 0; posM < s.size(); ++posM)
        {
            // 奇数拓展

            posL = posM;
            posR = posM;

            while(true)
            {
                if(posL - 1 >= 0 && posR + 1 <= s.size() - 1)
                {
                    if(s[posL - 1] == s[posR + 1])
                    {
                        --posL;
                        ++posR;
                        continue;
                    }
                }
                break;
            }

            lengthCache = posR - posL + 1;
            if(maxLength < lengthCache)
            {
                maxLength = lengthCache;
                longestString = s.substr(posL,maxLength);
            }
            
            // 偶数拓展

            posL = posM;
            posR = posM + 1;
            if(s[posL] != s[posR])
                continue;

            while(true)
            {
                if(posL - 1 >= 0 && posR + 1 <= s.size() - 1)
                {
                    if(s[posL - 1] == s[posR + 1])
                    {
                        --posL;
                        ++posR;
                        continue;
                    }
                }
                break;
            }
            
            lengthCache = posR - posL + 1;
            if(maxLength < lengthCache)
            {
                maxLength = lengthCache;
                longestString = s.substr(posL,maxLength);
            }
        }

        return longestString;
    }
};

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章           查看所有文章
加:2022-02-07 13:58:02  更:2022-02-07 14:00:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 18:42:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码