2021-02-08:给定一个字符串str,请问这个字符串的最长回文子序列长度是多少?
2021-02-08:给定一个字符串str,请问这个字符串的最长回文子序列长度是多少?
福哥答案2021-02-08:
自然智慧即可。
1.原序列和反序列求公共子序列。无代码。
2.递归。有代码。
3.动态规划。有代码。
根据动态规划表,dp[i][j]取【左边】,【下边】,【左下边】或者【左下边+2】)的最大值。
【左下边】还是【左下边+2】?i==j,取【左下边+2】;i!=j,取【左下边】。
代码用golang编写,代码如下:
package main
import "fmt"
func main() {
ret := longestPalindromeSubseq("bbbabbbb")
fmt.Println("递归:", ret)
ret = longestPalindromeSubseq2("bbbabbbb")
fmt.Println("动态规划:", ret)
}
//递归
func longestPalindromeSubseq(s string) int {
return process(s)
}
func process(s string) int {
sLen := len(s)
if sLen == 0 {
return 0
}
if sLen == 1 {
return 1
}
ret1 := process(s[1 : sLen-1])
ret2 := 0
ret3 := 0
if s[0] != s[sLen-1] {
ret2 = process(s[0 : sLen-1])
ret3 = process(s[1:sLen])
} else {
ret1 += 2
}
ret := getMax(ret1, ret2)
ret = getMax(ret, ret3)
return ret
}
//动态规划
func longestPalindromeSubseq2(s string) int {
sLen := len(s)
if sLen == 0 {
return 0
}
if sLen == 1 {
return 1
}
dp := make([][]int, sLen)
for i := 0; i < sLen; i++ {
dp[i] = make([]int, sLen)
}
for i := 0; i < sLen-1; i++ {
dp[i][i] = 1
if s[i] == s[i+1] {
dp[i][i+1] = 2
} else {
dp[i][i+1] = 1
}
}
for L := sLen - 3; L >= 0; L-- {
for R := L + 2; R < sLen; R++ {
dp[L][R] = getMax(dp[L][R-1], dp[L+1][R])
if s[L] == s[R] {
dp[L][R] = getMax(dp[L][R], 2+dp[L+1][R-1])
}
}
}
return dp[0][sLen-1]
}
func getMax(a int, b int) int {
if a > b {
return a
} else {
return b
}
}
执行结果如下:
***
[左神java代码](https://github.com/algorithmzuo/algorithmbasic2020/blob/master/src/class20/Code01_PalindromeSubsequence.java)
[力扣516](https://leetcode-cn.com/problems/longest-palindromic-subsequence/)
[评论](https://user.qzone.qq.com/3182319461/blog/1612741776)
2021-02-08:给定一个字符串str,请问这个字符串的最长回文子序列长度是多少?的更多相关文章
- 动态规划求一个序列的最长回文子序列(Longest Palindromic Substring )
1.问题描述 给定一个字符串(序列),求该序列的最长的回文子序列. 2.分析 需要理解的几个概念: ---回文 ---子序列 ---子串 http://www.cnblogs.com/LCCRNblo ...
- leetcode 求一个字符串的最长回文子串
最长回文子串问题:给定一个字符串,求它的最长回文子串长度.如果一个字符串正着读和反着读是一样的,那它就是回文串. 给定一个字符串,求它最长的回文子串长度,例如输入字符串'35534321',它的最 ...
- 最长回文字符串(manacher算法)
偶然看见了人家的博客发现这么一个问题,研究了一下午, 才发现其中的奥妙.Stupid. 题目描述: 回文串就是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串. ...
- 【转载】最长回文字符串(manacher算法)
原文转载自:http://blog.csdn.net/lsjseu/article/details/9990539 偶然看见了人家的博客发现这么一个问题,研究了一下午, 才发现其中的奥妙.Stupid ...
- Manarcher 求 字符串 的最长回文子串 【记录】
声明:这里仅仅写出了实现过程.想学习Manacher的能够看下这里给出的实现过程,算法涉及的一些原理推荐个博客. 给个链接 感觉讲的非常细 引子:给定一个字符串s,让你求出最长的回文子串的长度. 算法 ...
- 字符串的最长回文串:Manacher’s Algorithm
题目链接:Longest Palindromic Substring 1. 问题描述 Given a string S, find the longest palindromic substring ...
- Manacher算法:求解最长回文字符串,时间复杂度为O(N)
原文转载自:http://blog.csdn.net/yzl_rex/article/details/7908259 回文串定义:"回文串"是一个正读和反读都一样的字符串,比如&q ...
- Manacher算法讲解——字符串最长回文子串
引 入 引入 引入 Manachar算法主要是处理字符串中关于回文串的问题的,这没什么好说的. M a n a c h e r 算 法 Manacher算法 Manacher算法 朴素 求一个字符串中 ...
- 算法:Manacher,给定一个字符串str,返回str中最长回文子串的长度。
[题目] 给定一个字符串str,返回str中最长回文子串的长度 [举例] str="123", 1 str="abc1234321ab" 7 [暴力破解] 从左 ...
- 读入一个字符串str,输出字符串str中连续最长的数字串
要求: 读入一个长度不超过256的字符串,例如“abc123defg123456789hjfs123456”.要求输出“123456789” 思路: 遍历字符串,如果是数字串则计算往后一共有多少个数字 ...
随机推荐
- asyncio基础用法
说明:需要Python 3.7+ 1.并发运行两个coroutine,写法一: 用Task import asyncio import time async def say_after(delay, ...
- bootstrapv4轮播图去除两侧阴影及线框
一.前提条件: 在使用bootstrap v4中的轮播图组件时,两侧默认出现阴影,且轮播组件示例不一致! 二.bootstrap文档组件展示与实际应用 1.官方文档展示如下:没有阴影 2.实际应用情 ...
- 操作kubernets(k8s)的增删改查
资源的CRUD: 创建: Service service = client.services().inNamespace(namespace).create(service); 更新: Namespa ...
- lua脚本概述
1.lua脚本非常简单,轻量级,易于c/c++调用 2. 协程 是什么,与线程有啥区别 ??
- Javaweb基础复习------EL表达式+JSTL-if&foreach
EL表达式------简化JSP页面的Java代码 主要功能是------获取数据(语法:${data}) 举例: //ServletDemo1.java package com.example.se ...
- MySQL学习(十)索引
1.索引的种类 聚簇索引,非聚簇索引 主键索引,唯一索引,普通索引(前缀索引),全文索引 单值索引,复合索引 二级索引 覆盖索引 1.1 聚簇索引,非聚簇索引 参考文档: https://www.cn ...
- 文件的上传&预览&下载学习(一)
注:主要是说明后端逻辑和数据库表设计 1.当前主流的几种文件上传&预览&下载方式 把文件直接存储在服务器 分布式存储OSS,比如阿里OSS.Minio 2.数据库表设计 由于文件都是跟 ...
- Java8 获取当天日期的前一天
LocalDateTime.now().plusDays(-1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))
- 2020 Multi-University Training Contest 1 . Fibonacci Sum 水题改编
题意很简单,就是让你求这个东西,这个时候你发现,原题???? https://blog.csdn.net/acdreamers/article/details/23039571 哦,只是原来写过的哪一 ...
- 【个人首测】百度文心一言 VS ChatGPT GPT-4
昨天我写了一篇文章GPT-4牛是牛,但这几天先别急,文中我测试了用GPT-4回答ChatGPT 3.5 和 Notion AI的问题,大家期待的图片输入也没有出现. 昨天下午百度发布了文心一言,对标C ...