当前位置:网站首页>最长回文子串
最长回文子串
2022-08-09 10:51:00 【ase2014】
题目
最长回文子串
示例 1:
输入:s = “babad”
输出:“bab”
解释:“aba” 同样是符合题意的答案。
说明
- 使用动态规划法,状态转移
- 使用左右index left, right进行探测,检查s[left, right]是否为回文串,则需要判断s[left+1, right-1]为回文串,如果s[left+1, right-1]为回文串,则只要s[left] == s[right]即可
- 如何判断s[left+1, right-1]为回文串,使用逆序进行操作即可,即先判断s[left+1, right-1],记录到flag二维数组里面
以s="babad"为例子,横为i,纵向为j,使用二维数组存储状态,只用一半存储,然后通过二维数组进行状态转移
| i:j | 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|---|
| 0 | T | F | T | F | F |
| 1 | T | F | T | F | |
| 2 | T | F | F | ||
| 3 | T | F | |||
| 4 | T |
代码
func longestPalindrome(s string) string {
sLen := len(s)
if sLen < 2 {
return s
}
flag := make([][]bool, sLen)
for i := 0; i < sLen; i++ {
flag[i] = make([]bool, sLen)
}
result := ""
for i := sLen - 1; i >= 0; i-- {
for j := i; j < sLen; j++ {
// i == j , 如果j-i 小于2,则表明只有两个,两个相等,是回文
// 如果j-i大于2,则只需要判断i+1,j-1是否为回文,如果是,则记录i,j为回文,并判断是否比当前值长
if s[i] == s[j] && (j-i < 2 || flag[i+1][j-1]) {
flag[i][j] = true
tmp := j - i + 1
if len(result) <= tmp {
result = s[i : j+1]
}
}
}
}
return result
}
边栏推荐
- ThreadLocal及其内存泄露分析
- kubernetes中不可见的OOM
- Cpolar内网穿透的面板功能介绍
- LM小型可编程控制器软件(基于CoDeSys)笔记二十六:plc的数据存储区(模拟量输入通道部分)
- json库的dumps()方法和loads()方法
- [Error record] Solve the problem that ASRock J3455-ITX cannot be turned on without a monitor plugged in
- C语言统计不同单词数
- 15.10 the POSIX semaphore Unix environment programming chapter 15
- centos7.5 设置Mysql开机自启动
- 微信小程序——天气查询
猜你喜欢

shell脚本实战(第2版)/人民邮电出版社 脚本2 验证输入:仅限字母和数字

shap库源码和代码实现

机器学习-逻辑回归(logistics regression)

支付宝小程序的接入

CSDN的markdown编辑器语法完整大全

非科班毕业生,五面阿里:四轮技术面+HR一面已拿offer

图片查看器viewer

【原创】JPA中@PrePersist和@PreUpdate的用法

性能测试(04)-表达式和业务关联-JDBC关联

Dialogue with the DPO of a multinational consumer brand: How to start with data security compliance?See you on 8.11 Live!
随机推荐
shell脚本实战(第2版)/人民邮电出版社 脚本1 在PATH中查找程序
1003 Emergency (25分)
TensorFlow—计算梯度与控制梯度 : tf.gradients和compute_gradients和apply_gradients和clip_by_global_norm控制梯度
研发需求的验收标准应该怎么写? | 敏捷实践
MNIST机器学习入门
Jmeter BeanShell post processor
力扣(LeetCode)220. 存在重复元素 III(2022.08.08)
详细的np.matmul / np.dot / np.multiply / tf.matmul / tf.multiply / *
jvm-类加载系统
机器学习--朴素贝叶斯(Naive Bayes)
unix环境编程 第十四章 14.4 I/O多路转接
unix环境编程 第十五章 15.3 函数popen和pclose
乘积量化(PQ)
json库的dumps()方法和loads()方法
OpenSSF的开源软件风险评估工具:Scorecards
985毕业,工作3年,分享从阿里辞职到了国企的一路辛酸和经验
信息系统项目的十大管理
1005 Spell It Right (20分)
jmeter BeanShell 后置处理器
MySQL索引的B+树到底有多高?