赞
踩
这是一个常规的面试手撕代码题,题目难度适中,代码简短,考察算法知识点经典,有简单暴力解法,也有更优秀时间复杂度更低的解法,面试官可进行由简到难的提问,逐步深入,很能考察面试者的相关能力。
给定一个字符串 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
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。