[LeetCode]Longest Palindromic Substring题解(动态规划)
Longest Palindromic Substring:
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”
这是一个最长回文子串的问题。解决这个问题有很多种方法,动态规划是其中一种。复杂度为O(n^2)。
用bool矩阵set[i][j]表示子串sub(i,j)是否是回文串,首先初始化:
set[i][i]=true,因为单个字符是回文;
set[i][i+1]=true,if s[i] == s[i+1],因为两个相邻的字母如果相同那么是回文;
然后,如果s[i] == s[j],那么是s[i][j] = s[i+1][j-1];否则s[i][j] = false。
class Solution {
public:
string longestPalindrome(string s) {
bool set[1001][1001]={false};
int len = s.size(),max = 1,start = 0;//最长的回文子串长度是1,从0开始
//下面初始化矩阵
for(int i = 0; i < len; i++){
set[i][i] = true;
if(i<len-1 && s[i]==s[i+1]){
set[i][i+1] = true;
max = 2;
start = i;
}
}
//从长度为3开始,下面的i表示子串长度
for(int i = 3; i <= len; i++){
for(int j = 0; j <= len - i; j++){
if(s[j]==s[j+i-1] && set[j+1][j+i-2]){
set[j][j+i-1] = true;
max = i;
start = j;
}else{
set[j][j+i-1] = false;
}
}
}
return s.substr(start,max);
}
};
[LeetCode]Longest Palindromic Substring题解(动态规划)的更多相关文章
- [LeetCode] Longest Palindromic Substring 最长回文串
Given a string S, find the longest palindromic substring in S. You may assume that the maximum lengt ...
- Leetcode Longest Palindromic Substring
Given a string S, find the longest palindromic substring in S. You may assume that the maximum lengt ...
- C++ leetcode Longest Palindromic Substring
明天就要上课了,再过几天又要见班主任汇报项目进程了,什么都没做的我竟然有一种迷之淡定,大概是想体验一波熬夜修仙的快乐了.不管怎么说,每天还是要水一篇博文,写一个LeetCode的题才圆满. 题目:Gi ...
- Leetcode: Longest Palindromic Substring && Summary: Palindrome
Given a string s, find the longest palindromic substring in s. You may assume that the maximum lengt ...
- LeetCode:Longest Palindromic Substring 最长回文子串
题目链接 Given a string S, find the longest palindromic substring in S. You may assume that the maximum ...
- [LeetCode] Longest Palindromic Substring(manacher algorithm)
Given a string S, find the longest palindromic substring in S. You may assume that the maximum lengt ...
- Leetcode: Longest Palindromic Substring. java
Given a string S, find the longest palindromic substring in S. You may assume that the maximum lengt ...
- LeetCode——Longest Palindromic Substring
Given a string S, find the longest palindromic substring in S. You may assume that the maximum lengt ...
- Leetcode:Longest Palindromic Substring分析和实现
问题大意是在给定字符串中查找最长的回文子串,所谓的回文就是依据中间位置对称的字符串,比如abba,aba都是回文. 这个问题初一看,非常简单,但是会很快发现那些简单的思路都会带来O(n^3)级别的时间 ...
随机推荐
- linux强制安装rpm包的命令
rpm -ivh *********.rpm --nodeps --force 强制安装会忽略掉所有依赖关系,强制进行安装
- Android实用代码片段
有时候,需要一些小的功能,找到以后,就把它贴到了博客下面,作为留言,查找起来很不方便,所以就整理一下,方便自己和他人. 一. 获取系统版本号: 1 PackageInfo info = this.g ...
- 解决pymysql.err.InternalError: (1366, "Incorrect string value: '\\xF0\\x9F\\x8C\\xB8' for column 'headline' at row 1")
解决pymysql.err.InternalError: (1366, "Incorrect string value: '\\xF0\\x9F\\x8C\\xB8' for column ...
- [java实现]常见算法之字符串操作
一.字符串反转 把一个句子中的打次进行反转,比如“how are you” ,变为 “you are how” // 字符串反转 public class StringTest { // 字符反转的方 ...
- Linux磁盘分区、挂在
分区基础知识分区的方式:1) mbr分区:1.最多支持四个主分区2.系统只能安装在主分区3.扩展分区要占一个主分区4.MBR最大只支持2TB,但拥有最好的兼容性2) gtp分区:1.支持无限多个主分区 ...
- PigGo+Github图床,编写本地markdown
平时用markdown做笔记比较多,比较正式完整一点的笔记会用CmdMarkdown,编写过程贴图比较方便,但是有时候需要做本地的笔记,会用typora,typora虽然好用,但是贴图比较麻烦,这里可 ...
- C++中的名字重整技术
C++ 一直为人诟病之一的原因是他的二进制模块兼容性不好,即ABI(Application Binary Interface)问题.对于同一源代码,不同编译器,甚至同一编译器不同版本都不兼容,其编译出 ...
- Java的三个基础排序算法(其余将在以后补充)
第一个:冒泡排序算法 原理:相邻的两个值进行比较,如果前面的比后面的大就交换位置 eg:假设有5个元素的一个array 第一次:会比较4次,将最大的值放在最右边 第二次:会比较3次,又排出剩余4个元素 ...
- lambda modern C++
Lambda expressions (since C++11) Syntax [ captures ] <tparams>(optional)(c++20) ( params ) s ...
- 【Maven学习】maven中依赖的配置详解
根元素project下的dependencies可以包含一个或者多个dependency元素,以声明一个或多个项目依赖.每个依赖可以包含的元素有: groupId,artifactId和version ...