当前位置:网站首页>Record of force deduction and question brushing
Record of force deduction and question brushing
2022-07-06 15:39:00 【Xiaogeng who loves learning】
Dynamic programming
The first example Problem analysis and problem solving ideas of the longest palindrome substring
List of articles
Preface
Tips : Here you can add the general content to be recorded in this article :
I am a novice , Blogging is pure self memory , Convenient to review , No joy, no spray.
Tips : The following is the main body of this article , The following cases can be used for reference
One 、 What is dynamic planning ?
It's straight from the bottom , The most simple , The smallest problem f(1) and f(2) Start pushing up , Until we get the answer we want f(20), This is the idea of dynamic planning , That's why dynamic programming is generally free of recursion , It 's the loop iteration that does the calculation .
Two 、 The steps to solve the problem
1. Problem description
Give you a string s, find s The longest palindrome substring in .
1 <= s.length <= 1000
s It consists only of numbers and English letters
Be careful : The substring is continuous
Input :s = “babad”
Output :“bab”
explain :“aba” It's the same answer .
Input :s = “cbbd”
Output :“bb”
2. Problem analysis
The problem of finding the longest palindrome substring can be transformed into : When from the first i Character to character j individual The substring composed of characters is the longest palindrome substring , solve i and j
3. Problem solving steps
1. State definition :
Definition dp[ i ][ j ] Express s Of the i Character to character j A substring of characters , Whether it can form a palindrome substring
true Represents the interval [i,j] Palindrome string
false Represents the interval [i,j] Not a palindrome string
2. State transition equation :
dp[ i ][ j ] Can it form a palindrome substring , It depends on two factors
- The current first element is the same ,s[i] == s[j]
- The preceding substring is palindrome ,dp[i+1][j-1] == true
3. The state transition equation supplements the special case
The second use case above ,s = “cbbd”, When left = 1,right = 2 when , The judgment is :
s[1] == s[2] -> true
dp[2][1] -> false
Which leads to d[1][2] Wrong set as false
The root of the mistake is , When 「 The leading and trailing elements are next to 」 When left + 1 and right - 1 The problems caused
therefore , according to 「 Whether the leading and trailing elements are next to 」 Rearrange the state transition equation
- When the leading and trailing elements are next to ,right - left == 1
If the first and last elements are the same , Can form palindrome string
If the first and last elements are different , Does not form a palindrome string - When there is a gap between the first and last elements ,right - left > 1
The current leading and trailing elements are the same s[i] == s[j], And the preceding substring is palindrome dp[i+1][j-1] == true, Can form palindrome string
4. Problem solving steps
1. Initialize 2D array
example :
2. The code is as follows ( Example )
class Solution {
public:
string longestPalindrome(string s) {
int n=s.size();
vector<vector<bool>>dp(n,vector<bool>(n,false));
for(int i=0;i<n;i++)
{
dp[i][i]=true;
}
int begin=0;
int maxlength=1;
for(int left=n-1;left>=0;left--)
{
for(int right=left+1;right<n;right++)
{
if(right-left==1)
{
if(s[left]==s[right])
{
dp[left][right]=true;
}
else{
dp[left][right]=false;
}
}
else{
if(s[left]==s[right]&&dp[left+1][right-1]==true)
{
dp[left][right]=true;
}
else{
dp[left][right]=false;
}
}
if(dp[left][right]==true&&right-left+1>maxlength)
{
begin=left;
maxlength=right-left+1;
}
}
}
return s.substr(begin,maxlength);
}
};
3. Thought analysis 
Here is the reference
Quote the original :
`
https://leetcode-cn.com/problems/longest-palindromic-substring/solution/by-dodo_1202-k031/
、
边栏推荐
- Learning record: use stm32f1 watchdog
- Cost accounting [20]
- csapp shell lab
- FSM和i2c实验报告
- ucore Lab 1 系统软件启动过程
- China medical check valve market trend report, technical dynamic innovation and market forecast
- 通俗地理解什么是编程语言
- China's PCB connector market trend report, technological innovation and market forecast
- 数据在内存中的存储&载入内存,让程序运行起来
- 基于485总线的评分系统
猜你喜欢

STM32 learning record: input capture application

动态规划前路径问题优化方式

C语言必背代码大全

ucore Lab 1 系统软件启动过程

ucore lab7

Learning record: STM32F103 clock system overview working principle
Knowledge that you need to know when changing to software testing
How to do agile testing in automated testing?

csapp shell lab

STM32如何使用STLINK下载程序:点亮LED跑马灯(库版本)
随机推荐
JDBC introduction
Winter vacation daily question - maximum number of balloons
Market trend report, technical innovation and market forecast of lip care products in China and Indonesia
学习记录:使用STM32外部输入中断
Your wechat nickname may be betraying you
LeetCode#19. Delete the penultimate node of the linked list
Leetcode notes - dynamic planning -day6
Accounting regulations and professional ethics [2]
ArrayList set
LeetCode#62. Different paths
Research Report on market supply and demand and strategy of China's medical chair industry
ucore lab 2
Market trend report, technical innovation and market forecast of Chinese hospital respiratory humidification equipment
Lab 8 文件系统
Research Report on medical anesthesia machine industry - market status analysis and development prospect prediction
Intensive learning notes: Sutton book Chapter III exercise explanation (ex17~ex29)
Leetcode notes - dynamic planning -day7
Future trend and planning of software testing industry
力扣刷题记录--完全背包问题(一)
Automated testing problems you must understand, boutique summary