经典算法找最长回文
来源:互联网 发布:ideamaker 切片软件 编辑:程序博客网 时间:2024/06/06 06:50
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.
Example:
Input: “babad”
Output: “bab”
这里写代码片
Note: “aba” is also a valid answer.
Example:
Input: "cbbd"Output: "bb"
思路:从回文中的中间一个或者两个出发,向两边找。记录每一个回文长度,最后得到最长的那个的位置,和长度
class Solution {private int lo, maxLen;public String longestPalindrome(String s) { int len = s.length(); if (len < 2) return s; for (int i = 0; i < len-1; i++) { extendPalindrome(s, i, i); //assume odd length, try to extend Palindrome as possible extendPalindrome(s, i, i+1); //assume even length. } return s.substring(lo, lo + maxLen);}private void extendPalindrome(String s, int j, int k) { while (j >= 0 && k < s.length() && s.charAt(j) == s.charAt(k)) { j--; k++; } if (maxLen < k - j - 1) { lo = j + 1; maxLen = k - j - 1; }}}
阅读全文