zoukankan      html  css  js  c++  java
  • LeetCode 5

    https://leetcode-cn.com/problems/longest-palindromic-substring/

    最长回文串,这个题的中心扩展思想很巧妙。动态规划实在是比较难掌握,也不是那么容易写。

    中心扩展法,其实就是从字符串的每一个字符开始,分别向左右去寻找合规格的字符,情况如下

    如果左边的字符和当前字符相等并且下标大于0,当前字符串长度++,左边下边--,直到不符合条件。

    右边同理。

    接着我们再判断左手边和右手边的字符是否相等,如果相等的话我们继续往左右两边进行扩展,同时总长度+2。

    如果当前长度大于最大长度,更新最大长度和开始下标。

    class Solution {
        public String longestPalindrome(String s) {
            if(s == null || s.length() == 0){
                return "";
            }
            int left = 0;
            int right = 0;
            int maxLength = 0;
            int start = 0;
            int length = s.length();
            int current = 1;
            for(int i = 0; i <length;i++){
                left = i-1;
                right = i+1;
                while(left>=0 && s.charAt(left) == s.charAt(i)){
                    current++;
                    left--;
                }
                while(right<length&& s.charAt(right) == s.charAt(i)){
                    current++;
                    right++;
                }
                while(left>=0 && right<length && s.charAt(left) == s.charAt(right)){
                    current = current +2;
                    left--;
                    right++;
                }
                if(current>maxLength){
                    maxLength = current;
                    start = left;
                }
                current = 1;
            }
            return s.substring(start+1, start+maxLength+1);
        }
    }
    View Code
  • 相关阅读:
    使文字背景透明
    文件拷贝
    鼠标选取图象的实现
    刷新整个画布
    将区域的颜色取反
    用API处理位图
    用TImageList动态画透明图片
    将bmp文件转换为jpg文件
    解决phpmyadmin-1800秒超时链接失效问题
    Linux下解压命令大全
  • 原文地址:https://www.cnblogs.com/ZJPaang/p/12756264.html
Copyright © 2011-2022 走看看