5. Longest Palindromic Substring
来源:互联网 发布:卡尔软件 编辑:程序博客网 时间:2024/05/13 08:42
Discription:
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"
Explanation:
we can use dynamic programming to solve this problem
define dp[i][j] as whether substring of s from i to j is palindrome
for each pair i and j (j>=i)
if (i==j) dp[i][j]=true;
else if(s[i]==s[j] && (i>=j-1 || dp[i+1][j-1]==true)) dp[i][j]=true;
else dp[i][j]=false;
so for every substring we can know wether it is palindrom, and get the max one.
Implement code:
C++:
class Solution {
public:
string longestPalindrome(string s) {
int l=s.size();
if(l<2)return s;
vector<vector<bool> > ans(l, vector<bool>(l, false));
int ai=0, aj=1;
for(int i=l-1;i>=0;--i)
{
for(int j=i;j<l;++j)
{
if(s[i] == s[j] && (i>=j-1 || ans[i+1][j-1] == true))ans[i][j]=true;
if(ans[i][j] == true && j-i+1>aj)
{
ai = i;
aj = j-i+1;
}
}
}
return s.substr(ai, aj);
}
};
Java:
public:
string longestPalindrome(string s) {
int l=s.size();
if(l<2)return s;
vector<vector<bool> > ans(l, vector<bool>(l, false));
int ai=0, aj=1;
for(int i=l-1;i>=0;--i)
{
for(int j=i;j<l;++j)
{
if(s[i] == s[j] && (i>=j-1 || ans[i+1][j-1] == true))ans[i][j]=true;
if(ans[i][j] == true && j-i+1>aj)
{
ai = i;
aj = j-i+1;
}
}
}
return s.substr(ai, aj);
}
};
- 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
- amd规范转commonjs规范
- DD组工作的一些经验
- Java设计模式-结构型-代理模式
- Spring整合Redis缓存实例
- 算法--数组冒泡排序和选择排序原理分析
- 5. Longest Palindromic Substring
- 数组的解构赋值
- 一个换行符引起的死亡场景
- 论文阅读思路总结
- React Js 微信支付 简单封装
- Angular.js学习--Day01
- iOS之AR开发--demo制作篇:图片识别
- MySQL中的数据类型
- 全局异常处理