Leetcode || Longest Palindromic Substring
2015-10-21 10:11
411 查看
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.
超时!
超时!
class Solution { public String longestPalindrome(String s) { int max_len = 0; String max_str = null; for(int i=0; i<s.length(); i++) { for(int j=i+1; j<s.length(); j++) { if(isPalidndrom(s.substring(i, j+1))) { if(j+1-i>max_len) { max_str = s.substring(i, j+1); } } } } return max_str; } private boolean isPalidndrom(String str) { StringBuffer sb = new StringBuffer(str); String str1 = sb.reverse().toString(); if(str1.equals(str)) return true; else return false; } }
超时!
/* * 在所有字符左右加'#',就可以不分字符串长度奇偶考虑 */ class Solution1 { public String longestPalindrome(String s) { String str = ""; for(int i=0; i<s.length(); i++) { str = str + '#' + s.charAt(i); } str = str + '#'; System.out.println(str); int max_len = 0; int center = 0; for(int i=2; i<str.length(); i++) { int start = i - 1; int end = i + 1; int len = 0; while(start>=0 && end<str.length()) { if(String.valueOf(str.charAt(start)).equals(String.valueOf(str.charAt(end)))) { len += 2; } start -= 1; end += 1; } if(len>max_len) { max_len = len; center = i; //System.out.println(max_len); } } return str.substring(center-(max_len-1)/2, center+(max_len+1)/2+1).replaceAll("#", ""); } }
超时!
class Solution2 { public String longestPalindrome(String s) { int max_len = 0; String longest = null; boolean [][] table = new boolean[s.length()][s.length()]; if(s==null || s.isEmpty()) //判断字符串为空的方法,null没地址,""值为空,但有地址 System.exit(0); //单个字符都是回文 for(int i=0; i<s.length(); i++) { table[i][i] = true; max_len = 1; longest = s.substring(i, i+1); } //判断两个字符是否是回文 for(int i=0; i<s.length()-1; i++) { if(s.charAt(i) == s.charAt(i+1)) { table[i][i+1] = true; max_len = 2; longest = s.substring(i, i+2); } table[i][i+1] = false; } //求长度大于2的子串是否是回文串 for(int len=3; len<=s.length(); len++) { System.out.println(len); for(int i=0, j; (j=i+len-1)<s.length(); i++) { if(s.charAt(i) == s.charAt(j)) { table[i][j] = true; max_len = len; longest = s.substring(i, j+1); } else table[i][j] = false; } } return longest; } }
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- 021-Merge Two Sorted Lists(合并两个排好序的单链表);leetcode
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解
- LeetCode [Day 5] Longest Palindromic Substring 题解