5. Longest Palindromic Substring
来源:互联网 发布:北京地铁网络取票机 编辑:程序博客网 时间:2024/06/03 12:55
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.
Example:
Input: "babad"Output: "bab"Note: "aba" is also a valid answer.
Example:
Input: "cbbd"Output: "bb"
含有最XX的,典型动态规划题,最先想到的
时间O(n²),空间O(n²):
class Solution {public: string longestPalindrome(string s) { if(s.size()<=1) return s; int max_len=0; vector<vector<int>> dp(s.size(),vector<int>(s.size())); for(int i=1;i<s.size();i++){ for(int j=i;j>=0;j--){ if(s[i]==s[j]&&(i-j<=2||dp[i-1][j+1])){ //i j位置相邻与不相邻的情况 dp[i][j]=1; m[i-j+1]=s.substr(j,i-j+1); max_len=max(max_len,i-j+1); } } } return m[max_len]; }private: unordered_map<int,string> m;};
这里用到unordered_map和substr函数,刚开始刷leetcode的同学可能不熟悉,多查一查就明白了,使用起来很方便
然后想是否可以优化呢,时间O(n²),空间O(1)的中心扩散法:
class Solution {public: string longestPalindrome(string s) { if(s.size()<=1) return s; int max_len=0; int start=0; for(int i=0;i<s.size();i++){ int j=i,k=i; //定位中心 while(k<s.size()-1&&s[k]==s[k+1]) //相等的情况 k++; while(j>0&&k<s.size()-1&&s[j-1]==s[k+1]){ //两边扩散 j--; k++; } if(k-j+1>max_len){ max_len=k-j+1; start=j; } } return s.substr(start,max_len); }};
但是O(n²)的时间复杂度还是挺大的,去网上搜了一下,附上解法:
manacher
阅读全文
0 0
- 5.Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5.Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5.Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5.Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- Mycat系列—Linux下Mycat的安装配置
- Redis对象系统
- 传输表空间
- 方向导数、梯度、等高线、数量场与向量场
- Overload和Override的区别?
- 5. Longest Palindromic Substring
- cmd命令
- C++运算符的优先级和结合性
- c#定时器
- 使用w查看系统负载、vmstat、top、sar、nload命令
- 一个漂亮的php验证码类(分享)
- Eclipse 启动tomcat 问题
- ffmpeg: error while loading shared libraries: libavdevice.so.57
- SpringBoot部署到服务器Tomcat添加server.context-path后静态资源、请求等404