zoukankan      html  css  js  c++  java
  • 5. Longest Palindromic Substring

    题目:最长的回文串

    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);
        }
    }
  • 相关阅读:
    C#Socket发16进制以及进制转换
    WPF跨线程操作UI界面控件
    DispatcherTimer和Timer的区别
    C#等比列放大缩小图片
    计算进项税
    AX 中通过SqlServer数据库刷数据
    AX中日期的常用方法
    从AX2012系统批量生成CSV格式数据
    装箱单过发票
    导入CSV文件乱码
  • 原文地址:https://www.cnblogs.com/feng-ying/p/10504597.html
Copyright © 2011-2022 走看看