2023华为OD面试手撕真题【判断最长回文子串】

        这是一个常规的面试手撕代码题,题目难度适中,代码简短,考察算法知识点经典,有简单暴力解法,也有更优秀时间复杂度更低的解法,面试官可进行由简到难的提问,逐步深入,很能考察面试者的相关能力。

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。

示例 1:

输入: "babad"
输出: "bab"
注意: "aba"也是一个有效答案。

示例 2:

输入: "cbbd"
输出: "bb"

        首先还是老样子,拿到题目如果想不到优秀的解法,一定要能写出暴力简单的解法,及时时间复杂度不达标,最起码能说明代码能力还是有的,不至于一行代码憋不出来的水平。

        先说下结论,从时间复杂度考虑,从大到小分别为:暴力法、中心扩展法、马拉车算法。

1 暴力解法:【直接双重循环,判断子串是否是回文,时间复杂度:O(n^3)】

Python + Java:

class Solution:
    def longestPalindrome(self, s):
        """
        :type s: str
        :rtype: str
 

猜你喜欢

转载自blog.csdn.net/misayaaaaa/article/details/132884032