`

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
分享到:
评论

相关推荐

    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 版本

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

    最长回文子串最长回文子串 | 设置 1 ( )

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

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

    最大公共字符串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. ...

    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 中等 动态规划 ...

    leetcode题库-LeetCode:力码

    最长回文子串 Longest Palindromic Substring.cpp 7 整数反转 Reverse Integer.cpp 9 回文数 Palindrome Number.cpp 12 整数转罗马数字 Integer to Roman.cpp 13 罗马数字转整数 Roman to Integer.cpp 15 三数之和 3...

    leetcode卡-LeetCode:LeetCode题解

    最长回文子串,Manacher算法 0010 RegularExpressionMatching :star: :star: :star: 正则表达式匹配,dp 0012 Integer to Roman :star: 数组 0013 Roman to Integer :star: 哈希表 0014 Longest Common Prefix :star...

    leetcode跳跃-leetcode:leetcode一天一次

    无重复字符的最长子串:3. Longest Substring Without Repeating Characters - 最小跳跃步数问题 - 动态规划 + 循环策略优化:45. Jump Game II - 二叉树 前序遍历判断二叉树:98. Validate Binary Search Tree - 二...

    网格最短leetcodePython-LeetCode:力码

    最长回文子串 (Reference: https://leetcode.com/problems/longest-palindromic-substring/solution/) 解决方案 日期 最长公共子串 6/24 蛮力 6/24 动态规划 8/14 围绕中心展开 8/12 92.反向链表II 解决方案 日期 ...

    leetcode分类-leetcode:leetcode问题的代码

    leetcode 分类leetcode ...Palindromic Substring 链表 #2:Add Two Numbers 分而治之 #53:Maximum Subarray 队列/集 #3:Longest Substring Without Repeating Characters 优先队列 #23:Merge k Sorted Lists

    Leetcode回文串拼接-leetcode_note:用于记录leetcode题目的解析

    Leetcode回文串拼接 leetcode_node 题解 该项目主要用于基于Leetcode的刷题记录,与日常学习,对Leetcode上的题目按照解题方法进行分明别类的整理。 题目列表 1.Two Sum 2.Add Two Numbers 3.Longest Substring ...

    lrucacheleetcode-leetcode:leetcode

    Palindromic Substring 7. Reverse Integer 9. Palindrome Number 11. Container With Most Water 12. Integer to Roman 13. Roman to Integer 14. Longest Common Prefix 15. 3Sum 20. Valid Parentheses 21. Merge...

Global site tag (gtag.js) - Google Analytics