【LeetCode】005.Longest Palindromic Substring
来源:互联网 发布:手算工程量算法 编辑:程序博客网 时间:2024/06/17 20:22
程序应该没有问题,提交不能AC,主要的原因是超时。最好的时候,达到85个案例,还有几个案例未能测试。本地测试未通过案例,均可以。可能是我使用对象而非数组来作为动态规划的容器,导致开销过大。目前结合前面用Javascript刷LeetCode发现,在 javascript 中,乘除操作比较耗时,for循环能少则少。后面还会注意不同操作的耗时、性能情况。
先给出最化结构的版本,很短:
var longestPalindrome = function(s) { var p = {0:{}}; var result = [0,0]; for(var i = 0; i<s.length; i++){ p[i] == undefined? p[i] = {}:p[i+1] ={}; p[i][i] = p[i+1][i] = true; } for(var i = 1; i<s.length; i++){ for(var j = 0; j < s.length - i; j++){ p[j][j+i] = p[j+1][j+i-1] && (s[j] == s[j+i]); if( p[j][j+i] && i > result[0]){result[0] = i,result[1] = j;} } } return s.substr(result[1],result[0]+1);};
中间版本:
var longestPalindrome = function(s) { var p = {0:{}}; var result = [0,0,0] // 初始化 for(var i = 0; i<s.length; i++){ p[i] == undefined? p[i] = {}:p[i+1] ={}; // console.log(p[i],p[i+1]) p[i][i] = true; p[i+1][i] = true;// 这一步很关键,只是用于初始化 } for(var i = 1; i<s.length; i++){ for(var j = 0; j < s.length - i; j++){ p[j][j+i] = p[j+1][j+i-1] && (s[j] == s[j+i]); // console.log(j,j+i,p[j+1][j+i-1],s[j] == s[j+i]) } } for(var i in p){ for(var j in p[i]){ if(p[i][j]){ j-i > result[0]?(result[0] = j-i,result[1] = i,result[2] = j):(null); } // console.log(i,j,p[i][j]) } } // console.log(result); return s.substr(result[1],result[0]+1);};
// 优化版本var longestPalindrome = function(s) { var p = {0:{}}; var result = [0,0]; // 初始化 for(var i = 0; i<s.length; i++){ p[i] == undefined? p[i] = {}:p[i+1] ={}; // console.log(p[i],p[i+1]) p[i][i] = true; p[i+1][i] = true;// 这一步很关键,只是用于初始化 } for(var i = 1; i<s.length; i++){ for(var j = 0; j < s.length - i; j++){ p[j][j+i] = p[j+1][j+i-1] && (s[j] == s[j+i]); p[j][j+i] && i > result[0]?(result[0] = i,result[1] = j):(null); } } return s.substr(result[1],result[0]+1);};
阅读全文
0 0
- LeetCode 005. Longest Palindromic Substring
- 【LeetCode】005.Longest Palindromic Substring
- leetcode--005. Longest Palindromic Substring
- 【LeetCode】 005. Longest Palindromic Substring
- LeetCode 005. Longest Palindromic Substring
- 【LeetCode】005.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
- [LeetCode] Longest Palindromic Substring
- Longest Palindromic Substring leetcode
- LeetCode Longest Palindromic Substring
- 常用正则表达式大全
- Linux学习笔记
- Spring学习(四)-Bean集合属性
- TabLayout+Xlistview+第三方登录
- Python中字符串、列表的基本操作
- 【LeetCode】005.Longest Palindromic Substring
- 19 Three.js实现雾化效果
- kvm安装配置_Ubuntu 14.04
- CentOS7用源码包的形式安装Nginx服务器
- Android 点击事件解析
- 并发单例模式小总结
- VS1053
- 序列的区间操作(对区间的操作,好题)
- Virtual Memory