题解 | #编号子回文I#

编号子回文I

https://www.nowcoder.com/practice/db5995cd4783483f8b9f7a9e3b3a479f

大家好,我是开车的阿Q,自动驾驶的时代已经到来,没时间解释了,快和阿Q一起上车。作为自动驾驶系统工程师,必须要有最好的C++基础,让我们来一起刷题吧。

题目考察的知识点

字符串处理,回文串判断

题目解答方法的文字分析

题目要求在一群牛的编号中找出最长的回文串。回文串是指正读反读都一样的字符串。

思路:

  1. 遍历给定的字符串 s,以每个字符为中心,向两边扩展,查找以当前字符为中心的最长回文串。
  2. 由于回文串可能是奇数或偶数长度的,因此需要考虑两种情况:以当前字符为中心的奇数长度回文串和偶数长度回文串。
  3. 在扩展过程中记录当前找到的最长回文串,并在遍历完所有字符后返回结果。

举例说明:例如,给定字符串 "babad",以每个字符为中心,向两边扩展,最长的回文串是 "babad"。

本题解析所用的编程语言

C++

完整且正确的编程代码

class Solution {
public:
    string longestPalindrome(string s) {
        if (s.empty()) {
            return "";
        }
        
        int start = 0; // 记录最长回文串的起始位置
        int maxLen = 0; // 记录最长回文串的长度
        
        for (int i = 0; i < s.length(); ++i) {
            // 以当前字符为中心的奇数长度回文串
            int len1 = expandAroundCenter(s, i, i);
            // 以当前字符和下一个字符为中心的偶数长度回文串
            int len2 = expandAroundCenter(s, i, i + 1);
            
            int len = max(len1, len2);
            // 如果当前找到的回文串更长,则更新记录
            if (len > maxLen) {
                maxLen = len;
                start = i - (len - 1) / 2;
            }
        }
        
        return s.substr(start, maxLen);
    }
    
private:
    // 扩展以 left 和 right 为中心的回文串,并返回回文串的长度
    int expandAroundCenter(string& s, int left, int right) {
        while (left >= 0 && right < s.length() && s[left] == s[right]) {
            left--;
            right++;
        }
        // 注意:因为跳出循环时左右指针已经多移动了一位,所以计算长度要减 1
        return right - left - 1;
    }
};

您的关注、点赞、收藏就是我创作的动力,三连支持阿Q!

阿Q的题解 文章被收录于专栏

阿Q秋招刷过的题

全部评论

相关推荐

个人背景:学院二本计科专业&nbsp;大二开始实习个人经历:安克创新&nbsp;、理想汽车、字节跳动碎碎念:我做事只有三分钟热度。看到进了大厂的同学,我会羡慕,也会跟着努力上进;但遇到好看的小说,我又会放下手头的事沉迷其中,之前的坚持也就中断了。我有些自卑,总觉得自己学历和外貌都不够好。之前偶然在网上受到关注,我就喜欢上了上网,因为这里有很多人认可我。但我也很在意别人的评价,偶尔看到嘲讽的言论,会触发我的自卑情绪,让我感到愤怒。有时候我会强硬地回怼,有时候又会懦弱地选择无视。我也有虚荣心。不管是拿到安克、理想还是字节的机会,我在分享的时候都会带着这份心思。我会特意强调自己学历不好,是为了衬托出过程的艰难,以此显得自己更厉害。我知道,人往往会炫耀自己缺少的东西,来掩盖内心的空洞。我总想着走捷径,不太喜欢踏踏实实地做事。找实习的时候,我花了更多时间在研究面试技巧上,而不是提升专业能力。我会反复听面试录音分析技巧,看面试教程学习怎么和不同的面试官沟通,还会每天自言自语练习语言表达,同学都觉得我有点奇怪。我的实习生涯里,侥幸和运气占了很大一部分。我总在想,如果有一天我失去了这份幸运,这些特质可能会让我一蹶不振。ps:&nbsp;很多人会问我学习路线和经验&nbsp;但是就像我上面说的&nbsp;我的实习过程靠的很多是关键节点的运气&nbsp;技术上面我可能不如很多人&nbsp;&nbsp;所以请大家理性求助和理性参考我的回答&nbsp;附上我的投递记录
我的offer在哪里...:从去年看到现在,飞升哥就是榜样
我的求职进度条
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务