`

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.

题目的要求是给定一个字符串,找到一个最长的回文子串。

解决这道题首先我们要知道回文字符串的概念,单个字符属于回文字符串,例如"a", 还有另外的形式例如:“baab”, "bab",其中"bab"包括了单个字符的情况,这两种形式的字符串都是回文字符串。我们可以采用一种中心扩散法来处理这道题,因为有两种不同的形式,因此我们用两种不同的中心扩散法。代码如下:
public class Solution {
    public String longestPalindrome(String s) {
        if(s == null) return "";
        int start = 0;
        int end = 0;
        int max = 0;
        for(int i = 0; i < s.length(); i++) {
            //对应"aba"这种形式的字符串
            int left = i;
            int right = i;
            while(left > -1 && right < s.length() && s.charAt(left) == s.charAt(right)) {
                left --;
                right ++;
            }
            if(max < right - left - 1) {
                max = right - left - 1;
                start = left + 1;
                end = right;
            }
            //对应"abba"这种形式的字符串
            left = i;
            right = i + 1;
            while(left > -1 && right < s.length() && s.charAt(left) == s.charAt(right)) {
                left --;
                right ++;
            }
            if(max < right - left - 1) {
                max = right - left - 1;
                start = left + 1;
                end = right;
            }
        }
        return s.substring(start, end);
    }
}
0
0
分享到:
评论

相关推荐

    数据结构问题:“最长回文子串问题”(Longest Palindromic Substring),详细解法和代码实现

    数据结构问题:“最长回文子串问题”(Longest Palindromic Substring),详细解法和代码实现; 数据结构问题:“最长回文子串问题”(Longest Palindromic Substring),详细解法和代码实现; 数据结构问题:“最长...

    leetcode答案-Longest-Palindromic-Substring:最长回文子串

    Longest-Palindromic-Substring(最长回文子串) 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 Sample 1 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 Sample 2 输入...

    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. Java AC 版本

    c#-Leetcode面试题解之第5题最长回文子串.zip

    这道题目是LeetCode中的第5题,名为“最长回文子串”(Longest Palindromic Substring)。在本压缩包中,你将找到关于如何解决这个问题的C#代码实现。 回文串是一种特殊的字符串,它从前往后读和从后往前读是一样的...

    寻找字符串中最长的回文子串的长度

    在给定的"Longest Palindromic Substring.txt"文件中,可能包含了具体的C++代码实现或测试案例,你可以查看该文件以获取更深入的理解和参考。通过理解和掌握这类问题的解决方案,不仅能够提升在C++编程中的技巧,还...

    longest-palindromic-substring:最长回文子串 | 设置 1 (http

    《最长回文子串:Java实现与算法解析》 在字符串处理领域,寻找最长回文子串是一项常见的任务。回文串是指一个字符串从左到右读和从右到左读是一样的,例如"madam"、"level"等。在本篇中,我们将深入探讨如何使用...

    js-leetcode题解之5-longest-palindromic-substring.js

    在LeetCode题库中,解决“最长回文子串”问题是一道经典的算法题目,它要求程序员设计一个算法来找出字符串中无序的最长回文子串。回文是指一个字符串正读和反读都相同的字符串,例如“madam”或者“racecar”。 在...

    c语言-leetcode题解05-longest-palindromic-substring.c

    本篇文章针对LeetCode题库中的第5题“最长回文子串(Longest Palindromic Substring)”给出C语言的解决方案。回文串是一个正读和反读都一样的字符串,在解决这个问题时,我们需要找到输入字符串中最长的回文子串。 ...

    最大公共字符串leetcode-longest-palindromic-substring:查找字符串中最长的回文子串

    最长回文子串 给定一个字符串 s,找出 s 中最长的回文子串。 您可以假设 s 的最大长度为 1000。 Example 1: Input: "babad" Output: "bab" Note: "aba" is also a valid answer. Example 2: Input: "cbbd" Output: ...

    leetcode中文版-LeetCode:LeetcodeC++/Java

    最长回文子串 string,dp 8 String to Integer(atoi) 字符串转整数 string 13 Roman to Integer 罗马数字转整数 number,string 14 Longest Common Prefix 最长公共前缀 string 16 3Sum Closest 最接近的三数之和 two ...

    颜色分类leetcode-leetcode-[removed]我对Leetcode问题的解决方案

    最长回文子串 7 Reverse Integer 整数反转 9 Palindrome Number 回文数 11 Container With Most Water 盛最多水的容器 13 Roman to Integer 罗马数字转整数 14 Longest Common Prefix 最长公共前缀 20 Valid ...

    leetcode跳跃-LeCode:乐科

    最长回文子串 6. ZigZag Conversion Z字型变换 7. Reverse Integer 整数反转 8. String to Integer (atoi) 字符串转换整数 (atoi) 9. Palindrome Number 回文数 10. Regular Expression Matching 正则表达式匹配 11....

    lrucacheleetcode-leetcode-1:leetcode-1

    最长回文子串,补符号,记忆 6. ZigZag Conversion 观察规律 7. Reverse Integer 翻转整数 8. String to Integer 解析字符串 9. Palindrome Number 回文数字 10. Regular Expression Matching 动态规划,列出转换...

    最大公共字符串leetcode-longest-palindromic-substring:给定一个字符串s,找出s中最长的回文子串。你可以假

    最长回文子串 给定一个字符串 s,找出 s 中最长的回文子串。 您可以假设 s 的最大长度为 1000。 示例 1: Input: "babad" Output: "bab" Note: "aba" is also a valid answer. 示例 2: Input: "cbbd" Output: "bb" ...

    javalruleetcode-Leetcode:力码解决方案

    java lru leetcode Leetcode-Java Use Java to solve Leetcode&JianZhiOffer problems. ...(最长回文子串) Medium Dynamic Programming 7 Reverse Integer (整数反转) Easy Math 8 String to Integer (ato

    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: Input: "babad" Output: "bab" Note: "aba" is also a valid answer. ...

    手稿_V1.05

    题目 "longest-palindromic-substring" 是LeetCode中的一个问题,要求找到给定字符串中最长的回文子串。 部分内容描述了一个C++类`Solution`,该类包含一个公共成员函数`longestPalindrome`,用于找出输入字符串`s`...

    LeetCode2018

    400 题LeetCode solutions in Java 8 and Python3.NO.Title中文名...Longest Palindromic Substring最长回文子串Java PythonNoteMediumtwo pointers dp backtracking5ZigZag ConversionZ字形变换Java ...

    leetcode双人赛-LeetCode:力扣笔记

    Palindromic Substring 中等 回文 ZigZag Conversion 中等 矩阵 重要 Reverse Integer 简单 字串 String to Integer (atoi) 中等 字串 麻烦 Palindrome Number 简单 字串 Container With Most Water 中等 动态规划 ...

    c语言-leetcode 0005-longest-palindromic-substring.zip

    c c语言_leetcode 0005_longest_palindromic_substring.zip

Global site tag (gtag.js) - Google Analytics