随笔分类 - LeetCode
摘要:问题链接 "LeetCode 91" 题目解析 A~Z对应数字1~26,给出一段数字串,求破译方法数。 解题思路 动态规划。关键在于分类,定义 $dp[i]$ 为前i个字符的解密方法数,初始化为0。 小小注意:空数字串时返回0,非空时定义dp[0]=1,可以想象成没有也是一种解密方法(莫急待会再理解
阅读全文
摘要:问题链接 "LeetCode 516" 题目解析 求最长回文子序列。 解题思路 子序列和子串有区别的,子序列不需要连续,相对位置递增即可。 动态规划。对于任意字符串,如果头尾字符相同,那么字符串的最长回文子序列等于去掉首尾的字符串的最长回文子序列加上首尾;如果首尾字符不同,则最长子序列等于去掉头的字
阅读全文
摘要:提出问题 最长回文子串问题 :给定一个字符串,求它的最长回文子串长度。 如果一个字符串正着读和反着读是一样的,那它就是回文串。如a、aa、aba、abba等。 暴力解法 简单粗暴:找到字符串的所有子串,遍历每一个子串以验证它们是否为回文串。一个子串由子串的起点和终点确定,对于一个长度为n的字符串,共
阅读全文
摘要:问题链接 "LeetCode 5" 题目解析 求字符串的最长回文子串长度。 解题思路 回文:正读反读一模一样。 子串:原字符串中的一段连续字符串。 方法也有很多种,简单介绍一下。 方法一:DP DP[i][j]定义成子串[i, j]是否是回文串。外循环 $i$从 $n 1$ 往 $0$ 遍历,内循环
阅读全文
摘要:问题链接 "LeetCode 647" 题目解析 计算字符串的回文子串数。 解题思路 一个小问题,子串(Substring)、子数组(Subarray)和子序列(Subsequence)的区别:子串和子数组是等同的,特点是 连续的 ,比如[1,2,3]的子串有(1), (2), (3), (1,2)
阅读全文
摘要:问题链接 "LeetCode 795" 题目解析 给定一个数组A,左右范围L、R。求子数组的数量,要求:子数组最大值在L、R之间。 解题思路 子数组必须连续,利用最大值R对数组进行分段,设定变量 left 记录每段开始位置($A[left] R$,$A[left+1] ≤ R$),初始值为 1。 遍
阅读全文

浙公网安备 33010602011771号