leetcode Longest Palindromic Substring(Java)
来源:互联网 发布:辣木籽退伍军人淘宝 编辑:程序博客网 时间:2024/06/17 00:30
题目链接:点击打开链接
题目类型:字符串处理
解法:暴力遍历,但是超时了。。。
public class Solution {private String curr;public int isPalidrome(int start, int end){int i = start;int j = end;while (i < j){if (curr.charAt(i) == curr.charAt(j)){++i;--j;}else{return 1;}}return end-start+1;} public String longestPalindrome(String s) { int len = s.length(); int max_start = 0; int max_len = 0; curr = s; if (len == 1) return s; int curr_len = 0; for (int i = 0 ; i < len ; ++i) { for (int j = i+1 ; j < len ; ++j) { curr_len = isPalidrome(i, j); if (max_len < curr_len) { max_start = i; max_len = curr_len; } if (curr_len == len) return s.substring(max_start, max_start+max_len); } } return s.substring(max_start, max_start+max_len); }}解法:动态规划
public String longestPalindrome(String s) { int len = s.length(); int max_len = 1; int max_start = 0; boolean[][] palindrome = new boolean[len][len]; if (len < 2) return s; for (int i = 0 ; i < len ; ++i) { palindrome[i][i] = true; } for (int i = 0 ; i < len - 1 ; ++i) { if (s.charAt(i) == s.charAt(i+1)) { palindrome[i][i+1] = true; max_len = 2; max_start = i; } } for (int c_len = 3 ; c_len <= len ; ++c_len) { for (int i = 0 ; i < len - c_len + 1 ; ++i) { int j = i + c_len - 1; if (palindrome[i+1][j-1] && (s.charAt(i) == s.charAt(j))) { palindrome[i][j] = true; max_start = i; max_len = c_len; } } } return s.substring(max_start, max_start + max_len); }
解法:从中心扩展验证回文子串
public class Solution {private int max_start;private int max_len;private void extendPalindrome(String s, int start, int end){while (start >=0 && end < s.length() && s.charAt(start) == s.charAt(end)){--start;++end;}if (max_len < end - start- 1){max_start = start + 1;max_len = end - start - 1;}} public String longestPalindrome(String s) { int len = s.length(); if (len < 2) return s; for (int i = 0 ; i < len ; ++i) { extendPalindrome(s, i, i); extendPalindrome(s, i, i+1); } return s.substring(max_start, max_start + max_len); }}
阅读全文
0 0
- [Leetcode] Longest Palindromic Substring (Java)
- Longest Palindromic Substring leetcode java
- [LeetCode][Java]Longest Palindromic Substring
- LeetCode-Longest Palindromic subString(java)
- LeetCode : Longest Palindromic Substring [java]
- leetcode:Longest Palindromic Substring java
- [LeetCode]Longest Palindromic Substring(Java)
- [LeetCode] Longest Palindromic Substring(java)
- leetcode Longest Palindromic Substring(Java)
- 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
- Linux总结笔记
- Java反射机制详解
- 世人爱情短命的原因分析
- 安装Ubuntu14.04系统后一些基本配置和软件安装
- delphi7 编译的程序在win7下请求获得管理员权限的方法
- leetcode Longest Palindromic Substring(Java)
- java中参数的传递问题
- WPF DataContent内存释放问题
- 【VS开发】MFC滑动条 CSliderCtrl
- css3媒体查询练习
- springmvc实现方法拦截,用户未登录不能访问
- MATLAB学习笔记 函数记录(一)
- 文章解析整理:《如果你还没搞懂LSTM 网络,那本文绝对值得一看》
- iscsi