#leetcode#Longest Palindromic Substring
来源:互联网 发布:c语言的思考图 编辑:程序博客网 时间:2024/06/04 19:16
Longest Palindromic Substring
Total Accepted: 55519 Total Submissions: 267875My SubmissionsGiven 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.
思路, dp,用一个二维数组来记录当前下标 i, j,之间是否是palindromic,
如何判断是呢? 首先 i, j 位置的character 必须一样, 然后或者dp[i + 1][j - 1]== true, 或者 j - i <= 2, j - i == 2的时候比如 aba, 中间只隔
着一个元素, 肯定是回文。
reference : http://codeganker.blogspot.com/2014/02/longest-palindromic-substring-leetcode.html
public class Solution { public String longestPalindrome(String s) { if(s == null || s.length() == 0) return ""; int start = 0; int len = 0; boolean[][] dp = new boolean[s.length()][s.length()]; for(int i = s.length() - 1; i >= 0 ; i--){ for(int j = i; j < s.length(); j++){ if(i == j){ dp[i][j] = true; }else{ if(i < s.length() - 1 && j > 0){ dp[i][j] = s.charAt(i) == s.charAt(j) && (dp[i + 1][j - 1] || j - i <= 2); } } // dp[i][j] = s.charAt(i) == s.charAt(j) && (dp[i + 1][j - 1] || j - i <= 2); //dp[i][j] = s.charAt(i) == s.charAt(j) && ( j - i <= 2 || dp[i + 1][j - 1]); if(dp[i][j]){ if(j - i + 1 > len){ len = j - i + 1; start = i; } } } } return s.substring(start, start + len); }}
上面的代码其实写复杂了,用下面一行就可以完成dp[i][j]的赋值了, 但是要注意先判断是否 j - i <= 2, 如果 或 的操作顺序反过来, “a” 这个test case就过不了。。
dp[i][j] = s.charAt(i) == s.charAt(j) && ( j - i <= 2 || dp[i + 1][j - 1]);
0 0
- LeetCode: Longest Palindromic Substring
- LeetCode Longest Palindromic Substring
- LeetCode: Longest Palindromic Substring
- [Leetcode] Longest Palindromic Substring
- [LeetCode] Longest Palindromic Substring
- Leetcode : Longest Palindromic Substring
- [LeetCode]Longest Palindromic Substring
- leetcode Longest Palindromic Substring
- LeetCode-Longest Palindromic Substring
- [LeetCode] Longest Palindromic Substring
- Longest Palindromic Substring leetcode
- LeetCode Longest Palindromic Substring
- LeetCode - Longest Palindromic Substring
- LeetCode -- Longest Palindromic Substring
- LeetCode | Longest Palindromic Substring
- LeetCode: Longest Palindromic Substring
- [LeetCode]Longest Palindromic Substring
- leetcode Longest Palindromic Substring
- VisualVM Btrace使用
- 使用 WebSphere Application Server 的 Performance Monitoring Infrastructure API 编写性能监控工具
- Java 理论与实践: 用 JMX 检测应用程序
- Java RMI之HelloWorld篇
- LeetCode 题解(131): Number of Islands
- #leetcode#Longest Palindromic Substring
- C语言实现红黑树
- 基于 JVMTI 实现 Java 线程的监控
- 深入 Java 调试体系,第 2 部分: JVMTI 和 Agent 实现
- Hprof使用及在Hadoop中MR任务使用
- LeetCode 题解(132): Binary Tree Right Side View
- summary ranges
- PMC Flashtec + Memblaze PBlaze 4 = 性能惊人的NVM Express SSD!
- House Robber