[LeetCode] Longest Palindromic Substring
来源:互联网 发布:控制热点软件 编辑:程序博客网 时间:2024/06/08 02:55
Longest Palindromic Substring
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.
解题思路:
1、动态规划,找回文。用二维数组记录j到i是否为回文,若isPalin[j+1][i-1]为回文,且s[j]==s[i],则isPalin[j][i]为回文。
class Solution {public: string longestPalindrome(string s) { string result=""; int len=s.length(); if(len==0){ return result; } int start=0, end=0; bool isPalin[len][len]; //i到j是否为回文 for(int i=0; i<len; i++){ isPalin[i][i]=true; } for(int i=1; i<len; i++){ for(int j=i-1; j>=0; j--){ //计算j到i是否为回文 if( (j==i-1&&s[j]==s[i]) || (isPalin[j+1][i-1]&&s[j]==s[i])){ isPalin[j][i]=true; if(i-j>end-start){ start=j; end=i; } }else{ isPalin[j][i]=false; } } } result = s.substr(start, end-start+1); return result; }};此前用某个编译器不支持int array[变量],因此每次都用new,却会报内存溢出的错误。leetcode的编译器支持int array[变量],可以通过。
2、上述方法空间复杂度为O(n^2),时间复杂度为O(n^2)。若以某个字符(或字符的空隙)向两边扩展统计,可以将空间复杂度降为O(1),下面是誊抄其他人的Java代码:
public String longestPalindrome(String s) { if(s == null || s.length()==0) return ""; int maxLen = 0; String res = ""; for(int i=0;i<2*s.length()-1;i++) { int left = i/2; int right = i/2; if(i%2==1) right++; String str = lengthOfPalindrome(s,left,right); if(maxLen<str.length()) { maxLen = str.length(); res = str; } } return res;}private String lengthOfPalindrome(String s, int left, int right){ while(left>=0 && right<s.length() && s.charAt(left)==s.charAt(right)) { left--; right++; } return s.substring(left+1,right);}
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
- Android Studio - UNEXPECTED TOP-LEVEL EXCEPTION:
- View controller-based status bar appearance
- Arcgis标注语义换行
- Go 语言中的 Array,Slice,Map 和 Set
- C#一些委托类型
- [LeetCode] Longest Palindromic Substring
- 传智播客网络营销学院1期学员高薪曝光,程序员汗颜?
- C/C++ Linux 程序员必须了解的 10 个工具
- 引擎V8及优化技术
- 第四节 Lookup 缓存 之 使用动态查找高速缓存
- apachebench 服务器并发测试
- 求满二叉树(哈夫曼树)叶子节点和非叶子节点的数目
- Sql Server Alter语句 运用
- PM做事流程