题目描述:
给定一个字符串 s
,找到 s
中最长的回文子串。你可以假设 s
的最大长度为 1000。
示例 1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd"
输出: "bb"
算法实现:
JavaScript
/**
* @param {string} s
* @return {string}
*/
var longestPalindrome = function(s) {
var maxString = ""
var maxLen = 0
for(var i = 0; i < s.length; i++ ) {
var len = 0
for(var j = s.length - 1; j >= i; j-- ) {
var flag = 1
var a = i
var b = j
for( ; a <= b; a++, b-- ) {
if(s[a] !== s[b]) {
flag = 0
break
}
}
if(flag) {
len = j - i + 1
maxLen = maxLen > len ? maxLen : len
maxString = maxLen > len ? maxString : s.substring(i, j+1)
break
}
}
}
return maxString
};
思路:
遍历字符串找出该字符串的开头和结尾并记录,之后开头的++,尾部的—,确定该字符串为回文字符串。
总结:
学会了字符串的substring()方法,进一步熟练运用循环的用法,对于这道题,还有许多种更加合理简便的解法,我使用的是最简单的暴力解法,希望在进一步加强技能后减少代码的时间复杂度。