算法分析与设计丨第十五周丨LeetCode(19)——Longest Palindromic Substring(Medium)
来源:互联网 发布:简单菜谱软件下载 编辑:程序博客网 时间:2024/06/06 12:46
题目描述:
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"
题目解析:
动态规划。题目做得有点丑陋。核心思想是先看长度为1和2的回文串,然后从长度为3到size - 1遍历,如果发现减去头和尾的字串是回文并且头和尾的字母相等,则将其加入回文串中。
class Solution {public: string longestPalindrome(string s) { int size = s.size(); vector<vector<int> > dp(size,vector<int>(size,0)); int max_left = 0,max_right = 0; string max_substr = ""; for(int i = 0;i < size;++i) { dp[i][i] = 1; if(i != size - 1 && s[i] == s[i + 1]) { dp[i][i + 1] = 1; //the length of 2 is Palindromic max_left = i; max_right = i + 1; } } for(int strlen = 3; strlen <= size;++strlen) { for(int i = 0;i <= size - strlen;++i) { int j = i + strlen - 1; if(dp[i + 1][j - 1] == 1 && s[i] == s[j]) { dp[i][j] = 1; string temp = s.substr(i,strlen); if(temp.size() > max_right - max_left + 1) { max_left = i; max_right = j; max_substr = temp; } } } } bool flag = false; if(max_left == 0 && max_right == 0 || max_right - max_left == 1) { for(int i = 0;i < size - 1;++i) { if(dp[i][i + 1] == 1) { max_substr = s.substr(i,2); flag = true; break; } } } if(max_left == 0 && max_right == 0 && flag == false) return s.substr(0,1); return max_substr; }};
阅读全文
0 0
- 算法分析与设计丨第十五周丨LeetCode(19)——Longest Palindromic Substring(Medium)
- 算法设计与分析(5)-- Longest Palindromic Substring(难度:Medium)
- 算法分析与设计课程08——516. Longest Palindromic Subsequence(Medium)
- 算法分析与设计——LeetCode:5. Longest Palindromic Substring
- (算法分析Week6)Longest Palindromic Substring[Medium]
- 算法w3——Longest Palindromic Substring(leetcode 5)
- LeetCode刷题(C++)——Longest Palindromic Substring(Medium)
- 题解——Leetcode 5. Longest Palindromic Substring 难度:Medium
- 算法设计与分析(4)-- Longest Substring Without Repeating Characters(难度:Medium)
- Longest Palindromic Substring(medium 常考)
- 5. Longest Palindromic Substring (Medium)
- leetCode—Longest Palindromic Substring
- leetcode—Longest Palindromic Substring
- [Leetcode 5, Medium] Longest Palindromic Substring
- 【Leetcode】(5)Longest Palindromic Substring(Medium)
- Leetcode 5. Longest Palindromic Substring (Medium) (cpp)
- (Leetcode)5. Longest Palindromic Substring(medium)
- Longest Palindromic Substring(leetcode medium algorithm problem)
- Java面试题全集(下)
- Longest Valid Parentheses:最长括号子段匹配
- 红米1S的android 4.4.4刷机到android 7.1的Lineage OS 14.1
- idea 创建Web Service Client 报错 java.lang.AssertionError: org.xml.sax.SAXParseException; systemId:
- [BZOJ2746]-[HEOI2012]旅行问题-fail树+倍增LCA
- 算法分析与设计丨第十五周丨LeetCode(19)——Longest Palindromic Substring(Medium)
- Android动画插值器之PathInterpolator浅析
- spring-session使用配置(分布式共享session配置)
- 剑指offer — 翻转单词
- 贪吃蛇大作战单人版完整版代码以及详解
- 科研笔记
- 互联网时代的营销方法
- Java学习
- Error:Execution failed for task ':app:mergeDebugResources'. > F:\Android\E_5FoodImgMenu\app\src\main