题目描述:

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

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

示例 2:

  1. 输入: "cbbd"
  2. 输出: "bb"

算法实现:

JavaScript

  1. /**
  2. * @param {string} s
  3. * @return {string}
  4. */
  5. var longestPalindrome = function(s) {
  6. var maxString = ""
  7. var maxLen = 0
  8. for(var i = 0; i < s.length; i++ ) {
  9. var len = 0
  10. for(var j = s.length - 1; j >= i; j-- ) {
  11. var flag = 1
  12. var a = i
  13. var b = j
  14. for( ; a <= b; a++, b-- ) {
  15. if(s[a] !== s[b]) {
  16. flag = 0
  17. break
  18. }
  19. }
  20. if(flag) {
  21. len = j - i + 1
  22. maxLen = maxLen > len ? maxLen : len
  23. maxString = maxLen > len ? maxString : s.substring(i, j+1)
  24. break
  25. }
  26. }
  27. }
  28. return maxString
  29. };

思路:

遍历字符串找出该字符串的开头和结尾并记录,之后开头的++,尾部的—,确定该字符串为回文字符串。

总结:

学会了字符串的substring()方法,进一步熟练运用循环的用法,对于这道题,还有许多种更加合理简便的解法,我使用的是最简单的暴力解法,希望在进一步加强技能后减少代码的时间复杂度。