leetcode5。Longest Palindromic Substring

写了一个爆搜,超时了,所以更改了一个方法,使用flag数组记录标志,

动态规划,类似于lcs的解法,数组flag[i][j]记录s从i到j是不是回文

首先初始化,i>=j时,flag[i][j]=true,这是因为s[i][i]是单字符的回文,当i>j时,为true,是因为有可能出现flag[2][1]这种情况,比如bcaa,当计算s从2到3的时候,s[2]==s[3],这时就要计算s[2+1] ?= s[3-1],总的来说,当i>j时置为true,就是为了考虑j=i+1这种情况。

接着比较s[i] = s[j],如果成立,那么flag[i][j] = flag[i+1][j-1],否则直接flag[i][j]=false

public class Solution {
    public String longestPalindrome(String s) {

        int n = s.length();
        int max = 0,st = 0,end = 0;
        boolean [][]flag = new boolean[n][n];
        for(int i = 0; i < n; i++)
        {
            for(int j = 0; j < n; j++)
            {
                if(i < j)
                flag[i][j] = false;
                else
                flag[i][j] = true;
            }
        }

        for(int i = 1; i < n;i++)
        {
            for(int j = 0; j < i; j++ )
            {
                if(s.charAt(i) == s.charAt(j))
                {
                    flag[j][i] = flag[j+1][i-1];
                    if(flag[j][i] == true && i - j + 1 > max)
                    {
                        max = i-j+1;
                        st = j;
                        end = i;
                    }
                }
                else
                flag[j][i] = false;
            }
        }

        return s.substring(st,end+1);

    }
}

不知怎么的,leetcode上提交第一次的时候,又是显示超时,但是又提交了一次后,显示通过了。(meng)。

时间: 2024-10-10 16:34:22

leetcode5。Longest Palindromic Substring的相关文章

LeetCode5: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, and there exists one unique longest palindromic substring. 解题思路: 主要有三种: 第一种:Manacher算法,也是最快的,时间复杂度为O(n) 第二种:DP算法,时间复杂度为O(n*n) 第三种:

[Java]LeetCode5 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, and there exists one unique longest palindromic substring. 题意:求字符串中最长的回文 感觉这题不难,可以这样想,设置两个指针,分别对应0,len-1. 比如从第一个字符开始,abababac,我们可以找a出现

LeetCode-5. Longest Palindromic Substring(M)

解法 比较经典的问题,寻找最长回文子串.Leetcode里提供了多种解法.我采用最直观的解法:中心扩展法. 思路是每次以当前元素为中心向两边扩展,直到遇到不同元素,此时找到一个子串.有两点需要注意的地方: 1)空串和单字符都是回文,直接返回即可. 2)偶数回文和奇数回文的情况.例如:abace是aba的奇数串,以b为中心向两周扩展即可.但是abbawe是偶数串abba,这样需要以bb为指针向两周同时往外扩展. Given a string s, find the longest palindro

LeetCode5 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, and there exists one unique longest palindromic substring. 给一个String串,求其中最大的回文字串.这是一个典型的最长回文子串问题,目前有四种解法. 1.暴力测试,测试每个子串,显然这样是最笨的方法,

LeetCode OJ: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, and there exists one unique longest palindromic substring. 玩了两天dota2,罪过罪过,还是应该老老实实刷题啊. 题目求得是最长的回文子串,这里使用的是暴力的解法,也就是解决两种回文"asdsa"以

[Leetcode] 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, and there exists one unique longest palindromic substring. 做这道题之前要先了解什么是回文子串.回文串通俗的解释是,分别从字符串两端开始遍历,得到的结果相同,如"abba",从两端的遍历结果都是:&q

【leedcode】 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, and there exists one unique longest palindromic substring. https://leetcode.com/problems/longest-palindromic-substring/ 求最大回文的长度,其实这道题

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, and there exists one unique longest palindromic substring. 思路:(beat 2.63%) 以一个位置为准,考察两侧相同距离是否相同.这样会导致"aaaaaaaaaaaaaaaaaaaaaaaaaa...&qu

LeetCode #5 Longest Palindromic Substring (M)

[Problem] Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring. [Analysis] 这题的思路有很多种,网上也有各种讨论.这里我采用的是个人觉得比较好理解的一种利用Dynamic Progra