[LeetCode]5. Longest Palindromic Substring
来源:互联网 发布:sqlmap dbms mssql 编辑:程序博客网 时间:2024/05/29 07:32
Description
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.Input: “cbbd”
Output: “bb”
Discussion
这道题可以采用动态规划的算法。我们维护一个二维数组dp。dp[i][j]
表示从i到j是否是一个回文串。
递推式关系为:
如果dp[i+1][j-1] == 1 && s[i] == s[j],则dp[i][j] = 1
算法的时间复杂度为O(n^2)。
C++ Code
class Solution {public: string longestPalindrome(string s) { int ** dp; dp = new int * [s.length()]; //保存子串i~j是否是回文串 for(int i = 0; i < s.length(); i++) { dp[i] = new int[s.length()]; } for(int i = 0; i < s.length(); i++) { for(int j = 0; j < s.length(); j++) { //把只有一个字符的串初始化为1,其他为0 if(i < j) { dp[i][j] = 0; } else { dp[i][j] = 1; } } } int maxLen = 0; int answer_startLoc = 0; int answer_endLoc = 0; for(int len = 1; len < s.length(); len++) { for(int startLoc = 0; startLoc < s.length() - len; startLoc++) { //如果原子串是一个回文串,则在该子串前后添加两个相同的字符得到的新串也是回文串 if(s[startLoc] == s[startLoc + len] && dp[startLoc + 1][startLoc + len - 1] == 1) { dp[startLoc][startLoc + len] = 1; if(len > maxLen) { maxLen = len; answer_startLoc = startLoc; answer_endLoc = startLoc + len; } } } } return s.substr(answer_startLoc, answer_endLoc - answer_startLoc + 1); }};
阅读全文
0 0
- LeetCode 5. Longest Palindromic Substring
- LeetCode --- 5. Longest Palindromic Substring
- LeetCode 5.Longest Palindromic Substring
- [Leetcode] 5. Longest Palindromic Substring
- [LeetCode]5.Longest Palindromic Substring
- [leetcode] 5. Longest Palindromic Substring
- LeetCode-5. Longest Palindromic Substring
- leetcode 5. Longest Palindromic Substring
- leetcode 5. Longest Palindromic Substring
- Leetcode 5. Longest Palindromic Substring
- LeetCode 5. Longest Palindromic Substring
- Leetcode 5. Longest Palindromic Substring
- leetcode 5. Longest Palindromic Substring
- LeetCode-5. Longest Palindromic Substring
- Leetcode 5. Longest Palindromic Substring
- leetcode 5. Longest Palindromic Substring
- LeetCode *** 5. Longest Palindromic Substring
- 【leetcode】5. Longest Palindromic Substring
- shell while语句和until语句
- 第五周项目2---建立链栈算法库
- Java后台框架篇--Struts2.0与OGNL表达式
- 在Linux系统中不能访问外网的问题
- GetMemory函数详解
- [LeetCode]5. Longest Palindromic Substring
- 读书笔记_《统计陷阱》达莱尔.哈夫
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛(J.Minimum Distance in a Star Graph)
- java基本数据类型介绍及其使用注意点
- oracle之 RAC 11G ASM下控制文件多路复用
- VB实现右键扩展菜单以及按钮触发扩展菜单功能
- js获取屏幕宽和高
- Java后台框架篇--Struts2.0之结果视图类型
- TCL脚本语言详解