# 题目描述
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 一🌰:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
@前端进阶之旅: 代码已经复制到剪贴板
示例二🌰:
输入: "aafddfa"
输出: "afddfa"
@前端进阶之旅: 代码已经复制到剪贴板
示例三🌰:
输入: "abda"
输出: "a"
注意: "abda"并不是回文字符串,"abba"才是
@前端进阶之旅: 代码已经复制到剪贴板
所谓回文字符串就比如是:“上海自来水来自海上”,正读反读都是一样的。
# 解题思路1
暴力破解法:
(不推荐)
- 将输入的字符串转换为数组;
- 嵌套两层
for循环遍历数组,比较每一种情况下的字符串与它的反转字符串是否相同,若是相同则表明它为回文; - 比较出长度最长的回文子串。
暴力解决法最容易理解,但是所需的时间复杂度太大,在leetCode上允许只通过了一半的测试用例,因此不推荐使用。
# coding1
/**
* @param {string} s
* @return {string}
*/
var longestPalindrome = function(s) {
if (!s) return ''
if (s.length <= 1) return s
let sArr = s.split(''),
maxStrs = [],
currentStrs = [];
for (let i = 0; i < sArr.length; i++) {
for (let j = i; j < sArr.length; j++) {
currentStrs = sArr.slice(i, j + 1)
if (currentStrs.join('') === currentStrs.reverse().join('')) {
maxStrs = maxStrs.length > currentStrs.length ? 