码迷,mamicode.com
首页 > 其他好文 > 详细

5. Longest Palindromic Substring

时间:2019-03-10 11:14:21      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:stat   pre   ++   end   asd   sdk   记录   开始   panda   

题目:最长的回文串

Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.

Example 1:

Input: "babad"
Output: "bab"
Note: "aba" is also a valid answer.

Example 2:

Input: "cbbd"
Output: "bb"

解答:从字符串的第一个元素开始遍历回文串,最短的回文串长度为1,每次只记录最长的回文串。

java实现:

public class LongestPalindromicSubstring {
    private static int left = 0, length = 0;
    public static String longestPalindrome(String s) {
        for(int i = 0; i < s.length(); i++){
            expandAroundCenter(s, i);
        }
        return s.substring(left, left + length);
    }

    private static void expandAroundCenter(String s, int start){
        int end = start + 1;
        start = start - 1;
        // 巧妙的地方在于如果遇到重复的元素,那么这些重复的元素一定可以作为回文串的中心字符,不需要考虑奇数还是偶数。
        while(end < s.length() && (s.charAt(end) == s.charAt(end - 1))) end++;
        while(start >= 0 && end < s.length() && s.charAt(start) == s.charAt(end)){
            start--;
            end++;
        }
        if(end - start -1 > length){
            left = start + 1;
            length = end - start -1;
        }
    }

    public static void main(String[] args){
        String s = "jfkdslibbasdffdsabbcdfsdkfj";
        String result = longestPalindrome(s);
        System.out.println(result);
    }
}

 

5. Longest Palindromic Substring

标签:stat   pre   ++   end   asd   sdk   记录   开始   panda   

原文地址:https://www.cnblogs.com/feng-ying/p/10504597.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!