|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目描述:
- 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
- 示例 1:
- 输入: "babad"
- 输出: "bab"
- 注意: "aba" 也是一个有效答案。
- 示例 2:
- 输入: "cbbd"
- 输出: "bb"
- 来源:力扣(LeetCode)
- 链接:https://leetcode-cn.com/problems/longest-palindromic-substring
- 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
复制代码
- class Solution {
- public:
- string longestPalindrome(string s) {
- int len = s.size();
- if(len == 0||len == 1)return s;
- int start = 0, max_len = 1;
- vector<vector<int>> dp(len, vector<int>(len));
- for(int i = 0; i < len - 1; i++){
- dp[i][i]=1;
- if(s[i] == s[i+1]){
- dp[i][i+1]=1;
- max_len = 2;
- start = i;
- }
- }
- for(int l = 3; l <= len; l++){
- for(int i = 0; i + l - 1 < len; i++){
- int j= l + i - 1;
- if(s[i]==s[j] && dp[i+1][j-1]==1){
- dp[i][j] = 1;
- start = i;
- max_len = l;
- }
- }
- }
- return s.substr(start, max_len);
- }
- };
复制代码 |
|