LeetCode整理---第二、三周

本文主要介绍了LeetCode第二、三周的热门编程挑战,包括最长回文子串、Z字形变换、整数反转、字符串转换整数、回文数等题目。文中给出了详细的问题描述、解决方案以及示例,如暴力法、动态规划等。此外,还涉及了字符串处理和整数操作的技巧,适合提升编程能力。
摘要由CSDN通过智能技术生成

代码地址(在力扣运行均已通过)

https://github.com/tomjerry99/algorithm_leetcode

题目 (https://leetcode-cn.com/problemset/all/)

5.最长回文子串

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例 1:

输入: “babad”
输出: “bab”
注意: “aba” 也是一个有效答案。
示例 2:

输入: “cbbd”
输出: “bb”

1.暴力法。遍历整个字符串,对每个位置index,判断当前从0到index是否存在回文,时间复杂度为o(n3)。
2.动态规划。根据在这个文章里提到的解法,我们继续用四个步骤来分析。

寻找状态
通过分析回文字符串的特性,我们可以发现对于bab来说,因为字符a是回文,如果最外层的两个字符相等,那bab一定就是回文。同样对于cbabc来说,要判断是否是回文,我们已经知道bab是回文,如果最外层两个字符串相等,那么该字符就一定是回文。由此我们发现了他们之间的关系,那就是最外层字符的状态依赖于内层。
状态转移方程
i代表当前字符串的位置,j代表最末字符串的位置,判断i~j是回文,只需要判断str[i]=str[j],并且str[i+1]~str[j-1]是回文即可。我们用dp[i][j] = true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值