Longest Palindromic Substring --leetcode 数据结构第五题

原创 2016年06月01日 18:07:49

原题目: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.

Subscribe to see which companies asked this question

题目的意思是给定字符串,找出字符串中的最长的回文并输出。

第一种解决思路:暴力穷举法,这种方法虽然能找出,但是效率比较低,提交的时候会报超时。 有人会问为什么第二个for循环for (int j = i + resultStr.length(); j < s.length() + 1; j++) {这么写,这是因为想增加步长来减少运算量,因为小于这个长度的字符串就算是回文,也不是我们想要的结果。

public String longestPalindrome(String s) {
        String resultStr = "";
        for (int i = 0; i < s.length(); i++) {
            for (int j = i + resultStr.length(); j < s.length() + 1; j++) {
                String temp=s.substring(i, j);
                StringBuffer tempStr = new StringBuffer(temp);
                tempStr = tempStr.reverse();
                if (temp.equals(tempStr.toString())) {
                    if(tempStr.length()>resultStr.length()){
                        resultStr=tempStr.toString();
                    }
                }
            }
        }
        return resultStr;
    }

第二种:

public String longestPalindrome(String s) {
       if (s.isEmpty()) {  
            return null;  
        }  
        if (s.length() == 1) {  
            return s;  
        }  
        String longest = s.substring(0, 1);  
        for (int i = 0; i < s.length(); i++) {  
            // get longest palindrome with center of i  
            String tmp = helper(s, i, i);  
            if (tmp.length() > longest.length()) {  
                longest = tmp;  
            }  

            // get longest palindrome with center of i, i+1  
            tmp = helper(s, i, i + 1);  
            if (tmp.length() > longest.length()) {  
                longest = tmp;  
            }  
        }  
        return longest;  
    }  

    // Given a center, either one letter or two letter,  
    // Find longest palindrome  
    public static String helper(String s, int begin, int end) {  
        while (begin >= 0 && end <= s.length() - 1  
                && s.charAt(begin) == s.charAt(end)) {  
            begin--;  
            end++;  
        }  
        String subS = s.substring(begin + 1, end);  
        return subS;  

    }

虽然看起来很长,但是却能通过。

版权声明:本文为博主原创文章,未经博主允许不得转载。

LeetCode第五题,Longest Palindromic Substring

题目原文: Given a string S, find the longest palindromic substring in S. You may assume that the maximu...
  • hu1020935219
  • hu1020935219
  • 2014年08月05日 14:29
  • 2724

LeetCode(5) Longest Palindromic Substring

如果一个字符串从左向右写和从右向左写是一样的,这样的字符串就叫做palindromic string,如aba,或者abba。给定输入一个字符串,要输出一个子串,使得子串是输入字符串的最长的padro...
  • feliciafay
  • feliciafay
  • 2013年11月27日 14:00
  • 17803

[LeetCode]5 Longest Palindromic Substring(C++,Python实现)

LeetCode OJ的第五题,如果有问题或者给我指点欢迎来信讨论ms08.shiroh@gmail.com 题目描述...
  • Shiroh_ms08
  • Shiroh_ms08
  • 2014年05月23日 21:28
  • 3104

LeetCode Longest Palindromic Substring 最长回文子字符串 两种方法分析解答

最难想的地方:P代表一个表,比较难想的就是P表的下标i和j代表原字符串中的两个前后下标s[i]和s[j]的位置。 如果P[i,j]为真,当且仅当si-1,si-2...sj-1,sj这一个子串都为pa...
  • kenden23
  • kenden23
  • 2013年11月23日 10:27
  • 2864

【LeetCode-面试算法经典-Java实现】【005-Longest Palindromic Substring(最长回文子串)】

【005-Longest Palindromic Substring(最长回文子串)】给定一个字符串S,找出它的最大的回文子串,你可以假设字符串的最大长度是1000,而且存在唯一的最长回文子串。动态规...
  • DERRANTCM
  • DERRANTCM
  • 2015年07月17日 06:42
  • 2554

【LeetCode】Longest Palindromic Substring 解题报告

DP、KMP什么的都太高大上了,自己想了个朴素的遍历方法。 【题目】 Given a string S, find the longest palindromic substring in S. ...
  • ljiabin
  • ljiabin
  • 2014年10月26日 15:17
  • 4352

[leetcode: Python]5.Longest Palindromic Substring

题目: Given a string s, find the longest palindromic substring in s. You may assume that the maximum ...
  • NXHYD
  • NXHYD
  • 2017年05月17日 10:32
  • 275

Leetcode 5. Longest Palindromic Substring 新补充Manacher算法

5. Longest Palindromic Substring Total Accepted: 98755 Total Submissions: 434700 Difficulty: Medi...
  • fantasiasango
  • fantasiasango
  • 2016年03月15日 09:34
  • 514

[LeetCode] 005. Longest Palindromic Substring (Medium) (C++/Java/Python)

[LeetCode] 005. Longest Palindromic Substring (Medium) (C++/Java/Python)
  • hcbbt
  • hcbbt
  • 2015年02月28日 00:09
  • 2908

leetcode -- Longest Palindromic Substring -- 重点,有O(n)思路未理解

https://leetcode.com/problems/longest-palindromic-substring/思路1遍历所有s[i], 当回文串长度为奇数的时候,判断以其为中点的回文串的长度...
  • xyqzki
  • xyqzki
  • 2015年12月12日 21:30
  • 348
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Longest Palindromic Substring --leetcode 数据结构第五题
举报原因:
原因补充:

(最多只允许输入30个字)