首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >2021-08-04:给定一个字符串str,当然可以生成很多子序列。返回有多少个子序列是回文子序列,空序列不算回文。比如,str

2021-08-04:给定一个字符串str,当然可以生成很多子序列。返回有多少个子序列是回文子序列,空序列不算回文。比如,str

作者头像
福大大架构师每日一题
发布于 2021-08-06 02:33:34
发布于 2021-08-06 02:33:34
34800
代码可运行
举报
运行总次数:0
代码可运行

2021-08-04:给定一个字符串str,当然可以生成很多子序列。返回有多少个子序列是回文子序列,空序列不算回文。比如,str = “aba”,回文子序列:{a}、{a}、 {a,a}、 {b}、{a,b,a},返回5。

福大大 答案2021-08-04:

范围尝试模型。

dp[L][R]。

4种情况。

1.不包含L,不包含R。

2.不包含L,包含R。

3.包含L,不包含R。

4.包含L,包含R。

dp[L][R]依赖dp[L+1][R],dp[L][R-1],dp[L+1][R-1]。

时间复杂度:O(N**2)。

空间复杂度:O(N**2)。

代码用golang编写。代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package main

import "fmt"

func main() {
    ret := ways2("acac")
    fmt.Println(ret)
}

func ways2(str string) int {
    if len(str) == 0 {
        return 0
    }
    n := len(str)
    dp := make([][]int, n)
    for i := 0; i < n; i++ {
        dp[i] = make([]int, n)
    }
    for i := 0; i < n; i++ {
        dp[i][i] = 1
    }
    for i := 0; i < n-1; i++ {
        if str[i] == str[i+1] {
            dp[i][i+1] = 3
        } else {
            dp[i][i+1] = 2
        }
    }
    for L := n - 3; L >= 0; L-- {
        for R := L + 2; R < n; R++ {
            dp[L][R] = dp[L+1][R] + dp[L][R-1] - dp[L+1][R-1]
            if str[L] == str[R] {
                dp[L][R] += dp[L+1][R-1] + 1
            }
        }
    }
    return dp[0][n-1]
}

执行结果如下:

***

[左神java代码](https://github.com/algorithmzuo/coding-for-great-offer/blob/main/src/class20/Code04_PalindromeWays.java)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 福大大架构师每日一题 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Mac效率神器Alfred以及Alfred 秀操作,在下没输过
前言 Alfred,想必大家就算没用过也耳闻过。Alfred是一个让你可以丢掉鼠标的神器。很多读者可能之前认为Alfred的学习成本高,或者感觉它太复杂,而望之却步。其实Alfred并非高不可攀,本文以Alfred3.0为基础,一步步进行Alfred的常用操作,带领大家进入Alfred的高效世界! 从界面上分,Alfred分为设置界面和操作界面;从功能上分,Alfred分为基本搜索和快速启动的功能,以及工使用自定义插件的工作流功能。 本文为本人对Alfred的操作积累,会持续不定时更新。 如何获取Alfr
java爱好者
2019/06/22
1.7K0
(效率人生)MAC必备工具Alfred入门使用前言如何获取Alfred如何打开AlfredGeneral(通用界面)Features(特性界面)Advanced(高级设置)
1. General:通用; 2. Features:特性; 3. Workflows:工作流; 4. Appearance:外观; 5. Advanced 增强 6. Remote 远程 7. Powerpack:查看是否购买Powerpack以及其许可证。 8. Usage
若与
2018/08/14
2.5K0
(效率人生)MAC必备工具Alfred入门使用前言如何获取Alfred如何打开AlfredGeneral(通用界面)Features(特性界面)Advanced(高级设置)
Mac提升工作效率从Alfred神器开始(上)
最近公司发了新Mac,又要重新装各种软件,问了一圈身边的人发现,居然还有这么多人不知道Alfred这款神器,我表示非常震惊,因为使用Mac不用这款Alfred神器,真的是太可惜了,它的功能真的真的非常强大, 掌握这款工具你可以扔掉你手中的鼠标了; 今天这篇文章介绍一下这款神器的使用!
石臻臻的杂货铺[同名公众号]
2021/07/14
9230
你绝不能错过的效率神器 —— Alfred
Alfred 是 Mac 系统上一款专注于效率提升的著名应用,它能帮你快速打开网页、快速进行自定义搜索、查看剪贴板历史、快速查询单词等等。Alfred 提供的功能虽然很多,但目的只有一个 —— 那就是
陈树义
2018/04/13
3.3K0
你绝不能错过的效率神器 —— Alfred
Mac效率办公神器:alfred 5
alfred 5是一款强大的Mac效率办公软件,可以快速的搜索本地程序,使用搜索引擎搜索、查询词典、查找文件、管理、音乐控制等等!
啾咪啾咪
2022/08/27
7430
alfred 5 mac(最好用的mac效率工具)汉化版
alfred 5 for mac完美汉化版是Mac os系统上一款非常好用的快速启动工具。alfred 5可以快速的搜索本地程序,使用搜索引擎搜索、查询词典、查找文件、管理、音乐控制等等!alfred mac功能十分强大。
Mac知识分享
2022/07/07
1.2K0
Alfred 4 for mac汉化版-mac效率工具
alfred mac版是一款mac效率工具,Alfred 4汉化版可以进行索引擎搜索、查询词典、发送邮件、查找文件、剪贴板 管理、音乐控制等功能。
Mac软件分享
2022/07/20
8060
Alfred 4 for mac汉化版-mac效率工具
Mac 效率工具必备神器 —— Alfred
链接: https://pan.baidu.com/s/1S1KveIcFhXB9_oT-fZxQqg 密码: l9b4
zx钟
2022/04/27
1K0
Mac 效率工具必备神器 —— Alfred
每日好物分享第二弹——mac平台效率神器alfred
• 免费版本下的alfred已经可以满足大部分的需求了:你可以把它理解成一个advanced般的spotlight。我个人最吹捧的还是它提供了一个本地文件及应用检索及快速调用基础功能(计算、词典。。)的操作。(我通过使用find,在本地全目录下搜寻有“P-gp”关键词的文件)
北野茶缸子
2021/12/17
9870
每日好物分享第二弹——mac平台效率神器alfred
Alfred 4: MacOS效率提升大杀器(上篇)
Alfred是一款专注于提升MacOS效率的软件,目前的版本为Alfred 4,可以在官网下载和购买激活码。正版的授权码分为v4版和终身免费升级版,分别为£34(283元)和£59(491元)。我本人是买的Single License只能用v4版本的,当然不激活也可以使用,但是部分功能受限。
Y1ng
2022/10/31
1.2K0
Alfred 4: MacOS效率提升大杀器(上篇)
极客工具之 Alfred 与 Dash
使用 Alfred 可以让你在 macOS 程序间自由切换、快速查找或打开文件、调起浏览器进行网页搜索、 还可以做计算器。 另外,还有许多其它搜索功能以及付费的工作流特性,Powerpack 就是 Alfred 工作流模块,需要付费才能使用,不过,我觉得免费的功能已经完全够用了, 而且很简洁,功能太多咱也学不过来。
imroc
2018/11/08
2.5K0
Alfred上可提高工作效率的Workflow推荐
温馨提示:本文中Alfred是Mac平台的工具,不适用于其他平台。 Alfred是Mac平台上被很多人吹爆的一款效率提升软件,我刚毕业工作的时候就看到公司内网有人推荐,但没有尝试。 后来我跳槽后自己买了Macbook pro,在努力把笔记本打造成高效开发工具时,又重新发现了这个app,又毫不犹豫的购买了Powerpack,结合一些workflow,很多繁琐的工作变得非常简单,比如之前百度搜索一个东西,需要打开浏览器,然后打开百度,再输入要搜的词,再点搜索一套组合拳下来几十秒就过去了,有了Alfred 快捷键+触发词+搜索词+回车 几秒钟搞定。下图是我最近一月来每天的Alfred的使用频率,工作日平均每天有30+次的使用率。
xindoo
2021/01/21
6.1K0
推荐一个搜索神器,工作效率何止翻倍!
大家好,我是小识,上个礼拜问一个同事要文件,结果看他一个一个文件夹找了半天都没有找到,所以必须安利一下Alfred。真正的搜索神器,啥都能搜
Java识堂
2021/12/22
4900
推荐一个搜索神器,工作效率何止翻倍!
使用 Alfred + Selenium 编写第一个 Workflow
本文主要简单介绍了 Alfred 的功能,浏览器自动化工具 Selenium 的功能以及代码示例,最后介绍了如何编写一个简单的 Alfred Workflow 来提高工作效率。
airmelt
2022/12/02
1.2K0
那些相见恨晚的 Mac 软件
可以转换短网址、搜索书签和浏览器历史、可以对复制的图片进行 OCR 识别等非常强大的功能。
明明如月学长
2021/11/15
1.3K0
Mac提升工作效率从Alfred神器开始(下)
上一篇讲了 Alfred的基础篇,虽然基础篇讲的内容已经很强大了. 但是其实真正让Alfred坐上Mac效率提升第一的神器宝座的而是它的WorkFlow功能; WorkFlow 是工作流的意思; Alfred相当于提供了一个扩展接口,让所有人都能很方便的去制作一些工作流来满足自己的日常需求; 我今天搜罗了一些在开发人员看来是非常实用的 WorkFlow; 所有的文件已经打包好;可以一次性下载实用;
石臻臻的杂货铺[同名公众号]
2021/07/14
1.1K0
Alfred快速启动开发环境
Alfred是一款Mac系统必装软件,他提供快速启动App、全文查找文件、workflow自动化流程等功能。本文介绍如何使用Alfred Workflow+Apple Script实现快速启动开发环境。 问题 & 设想 先梳理下,我在日常启动前端的工作环境时,需要手动操作的步骤: 打开Webstorm并选择开发项目(10秒) 打开iterm命令行工具,并cd到项目下(5秒) 打开whistle代理(5秒) 打开chrome浏览器工作必须的插件,比如代理插件、react、vue调试插件(20秒) 打开c
QQ音乐技术团队
2020/06/24
3.5K0
让你高效工作的六大Windows应用
让你高效工作的六大windows应用 今 天我将给大家介绍一些我个人用到的这些Windows平台上的效率神器们。 page 1 Wox Wox官网 用 Macbook 的小伙伴们用过 Alfred 吧
昱良
2018/04/08
2K0
让你高效工作的六大Windows应用
Gank Alfred Workflow
下载最新版本的workflow文件双击使用Alfred打开即可,workflow也已提交到Packal。
宅男潇涧
2018/08/01
1.2K0
Gank Alfred Workflow
最常用的10个mac应用,别问,问就是精品
在某次系统升级之后,我的 MacBook Pro 每隔三五天会随机出现五国问题(也就相当于 Windows 的蓝屏),然后自动重启,虽然一分钟内能恢复现场,但内心仍有些不爽,如果正在调试程序,突然重启很影响效率,毕竟周围同事的 Mac 从来不需要重启。
somenzz
2020/11/25
1.7K0
最常用的10个mac应用,别问,问就是精品
相关推荐
Mac效率神器Alfred以及Alfred 秀操作,在下没输过
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验