码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode: Longest Palindromic Substring

时间:2014-06-17 14:35:50      阅读:297      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   code   java   http   

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: 想到了Naive的方法,时间复杂度为O(N^3),知道肯定不是最优的方法,一时也想不出别的方法,于是看了网上的做法,最后采纳了这个人的方法,感觉他讲的比较全面:http://www.programcreek.com/2013/12/leetcode-solution-of-longest-palindromic-substring-java/

1. Naive Approach:  The time complexity is O(n^3). If this is submitted to LeetCode onlinejudge, "Time Limit Exceeded".

2. Dynamic Programming: 

Let s be the input string, i and j are two indices of the string.

Define a 2-dimension array "table" and let table[i][j] denote whether substring from i to j is palindrome.

Start condition:

table[i][i] == 1;
table[i][i+1] == 1  => s.charAt(i) == s.charAt(i+1) 

Changing condition:

table[i][j] == 1 => table[i+1][j-1] == 1 && s.charAt(i) == s.charAt(j)

Time O(n^2) Space O(n^2)

3. Smart Algorithm: Time O(n^2), Space O(1)

 1 public class Solution {
 2     public String longestPalindrome(String s) {
 3         if (s == null || s.length() == 0) return null;
 4         if (s.length() == 1) return s;
 5         String longest = "";
 6         for (int i = 0; i < s.length(); i++) {
 7             String temp = helper(s, i, i);
 8             if (temp.length() > longest.length()) {
 9                 longest = temp;
10             }
11             temp = helper(s, i, i + 1);
12             if (temp.length() > longest.length()) {
13                 longest = temp;
14             }
15         }
16         return longest;
17     }
18     
19     public String helper(String s, int start, int end) {
20         while (start >=0 && end < s.length() && s.charAt(start) == s.charAt(end)) {
21             start--;
22             end++;
23         }
24         start++;
25         end--;
26         return s.substring(start, end + 1);
27     }
28 }

 

Leetcode: Longest Palindromic Substring,布布扣,bubuko.com

Leetcode: Longest Palindromic Substring

标签:style   class   blog   code   java   http   

原文地址:http://www.cnblogs.com/EdwardLiu/p/3792493.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!