子串和子序列(python)

2023-10-27

  • 子串:串中任意个连续的字符组成的子序列称为该串的子串;
  • 子序列:序列的一部分项按原有次序排列而得的序列;
# -*- coding=utf-8 -*-

##### 1: 连续子串最大和 #####
def MaxSum(arr):
    res, s = arr[0], arr[0]
    for x in arr[1:]:
        s = max(x, s+x)
        res = max(res, s)
    return res

##### 2: 连续子串最大乘积 #####
def MaxMulti(arr):
    maxA, minA = [arr[0]], [arr[0]]
    res = arr[0]
    for i in range(1, len(arr)):
        maxA.append(max(arr[i], maxA[i-1]*arr[i], minA[i-1]*arr[i]))
        minA.append(min(arr[i], maxA[i-1]*arr[i], minA[i-1]*arr[i]))
        res = max(res, maxA[-1])
    return res

#### 3:最长递增子序列 ####
def LIS(arr):
    dp = [1] * len(arr)
    for i in range(len(arr)):
        temp = 1
        for j in range(i-1, -1, -1):
            if arr[i] > arr[j]:
                temp = max(temp, dp[j]+1)
        dp[i] = temp
    return max(dp)

#### 4:最长公共子串 ####
def LongSubStr(s1,s2):
    dp = [[0] * (len(s2)+1) for _ in range(len(s1)+1)]
    res = 0
    for i in range(1, len(s1)+1):
        for j in range(1, len(s2)+1):
            if s1[i-1] == s2[j-1]:
                dp[i][j] = dp[i-1][j-1] + 1
        res = max(res, max(dp[i]))
    return res

#### 5:最长公共子序列 ####
def LongSubSeq(s1,s2):
    dp = [[0] * (len(s2)+1) for _ in range(len(s1)+1)]
    res = 0
    for i in range(1, len(s1)+1):
        for j in range(1, len(s2)+1):
            if s1[i-1] == s2[j-1]:
                dp[i][j] = dp[i-1][j-1] + 1
            else:
                dp[i][j] = max(dp[i][j-1], dp[i-1][j])
        res = max(res, max(dp[i]))
    return res

#### 6:最长回文子串 ####
def LongPalindrome(s):
    dp = [[False]*len(s) for _ in range(len(s))]
    res = ''
    for x in range(len(s)):
        for i in range(len(s)-x):
            j = i + x
            if x == 0:
                dp[i][j] = True
            elif x == 1:
                dp[i][j] = (s[i] == s[j])
            else:
                dp[i][j] = (s[i] == s[j] and dp[i+1][j-1])
            if dp[i][j] and j-i+1 > len(res):
                res = s[i:j+1]
    return res

#### 7:最长回文子序列 ####
def LongPalindromeSubseq(s):
    dp = [[0] * len(s) for _ in range(len(s))] 
    for i in range(len(s)-1, -1, -1):
        dp[i][i] = 1
        for j in range(i+1, len(s)):
            if s[i] == s[j]:
                dp[i][j] = dp[i+1][j-1] + 2
            else:
                dp[i][j] = max(dp[i+1][j], dp[i][j-1])
    return dp[0][-1]

num = [1,3,4,0,6,5,-1,2]
s1 = 'ASDSVAFA'
s2 = 'ABDSVSDF'
print(MaxSum(num), MaxMulti(num), LIS(num))
print(LongSubStr(s1, s2), LongSubSeq(s1,s2))
print(LongPalindrome(s1), LongPalindromeSubseq(s1))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

子串和子序列(python) 的相关文章

  • Python 和图形数据库。使用 java lib 包装器还是 REST api?

    我想问你在Python中使用图数据库 Neo4j 的最佳方法 你觉得我应该使用 neo4j python embedded neo4j python 嵌入式 http docs neo4j org chunked milestone pyt
  • 使用 Flask 和 SQLAlchemy 在 Celery 任务中未更新数据库

    我正在使用 Flask 和 SQLAlchemy 编写 Web 应用程序 我的程序需要在后台处理一些内容 然后将这些内容标记为在数据库中已处理 使用标准 Flask Celery 示例 http flask pocoo org docs 0
  • Flask-login:无法理解它是如何工作的

    我试图理解如何Flask Login https flask login readthedocs org en latest works 我在他们的文档中看到他们使用预先填充的用户列表 我想使用数据库存储的用户列表 但是 我不明白其中的一些
  • Python str.format() 方法的默认 kwarg 值

    我希望尝试使现有字符串的复数化尽可能简单 并且想知道是否有可能得到str format 在查找 kwargs 时解释默认值 这是一个例子 string number of sheep sheep has run away dict comp
  • RTSP 设置后接收 RTP 数据包

    我正在尝试使用 Python 从 IP 摄像机流式传输 RTP 数据包 我能够使用 RTSP 协议发送描述 设置和播放命令 但是 我无法开始使用 RTP 传输实际视频流 这是代码 import socket def printrec rec
  • 运行 Sublime Text 3 插件时保存编辑

    为了理解我想要实现的目标 在另一个视图中打印延迟文本 我正在尝试使这个 sublime text 3 插件正常运行我想使用运行方法参数中传递的编辑来调用我的类的多个方法 如下所示 sample code nothing real class
  • R 的 ggplot2 有 Python API 吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我的问题就像标题一样简单 我想使用R s ggplot2但我所有的数据处理都是在Python 有没有Py
  • 在 Pandas 中将行拆分为多列

    所以我有这个数据框 df pd DataFrame Function 1 internal prop 1 external prop 1 Function 2 internal prop 2 external prop 2 Function
  • 从 Robot Framework 访问 python 类的变量

    我有一个 python 文件 例如 Animals py 在里面我定义了 3 个不同的类 如下所示 Animals py class Animal listAnimal dog cat lt def init self Animal con
  • 用于将 cython 中的许多 C++ 类包装到单个共享对象的项目结构

    我在文档 邮件列表和这个问题在这里 https stackoverflow com questions 10300660 cython and distutils 但我想得到一个更直接的答案来解决我的具体情况 我正在通过尝试一点一点地包装我
  • 没有名为 crypto.cipher 的模块

    我现在正在尝试加密一段时间 我最近得到了这个基于 python 的密码器 名为PythonCrypter https github com jbertman PythonCrypter 我对 Python 相当陌生 当我尝试通过终端打开 C
  • Python 中的 Lanczos 插值与 2D 图像

    我尝试重新缩放 2D 图像 灰度 图像大小为 256x256 所需输出为 224x224 像素值范围从 0 到 1300 我尝试了两种使用 Lanczos 插值来重新调整它们的方法 首先使用PIL图像 import numpy as np
  • 使用带有关键字参数的 map() 函数

    这是我尝试使用的循环map功能于 volume ids 1 2 3 4 5 ip 172 12 13 122 for volume id in volume ids my function volume id ip ip 我有办法做到这一点
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • 如何在 Python 中检索 for 循环中的剩余项目?

    我有一个简单的 for 循环迭代项目列表 在某些时候 我知道它会破裂 我该如何退回剩余的物品 for i in a b c d e f g try some func i except return remaining items if s
  • 如何使用 Ansible playbook 中的 service_facts 模块检查服务是否存在且未安装在服务器中?

    我用过service facts检查服务是否正在运行并启用 在某些服务器中 未安装特定的软件包 现在 我如何知道这个特定的软件包没有安装在该特定的服务器上service facts module 在 Ansible 剧本中 它显示以下错误
  • 以编程方式停止Python脚本的执行? [复制]

    这个问题在这里已经有答案了 是否可以使用命令在任意行停止执行 python 脚本 Like some code quit quit at this point some more code that s not executed sys e
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • 如何在ipywidget按钮中显示全文?

    我正在创建一个ipywidget带有一些文本的按钮 但按钮中未显示全文 我使用的代码如下 import ipywidgets as widgets from IPython display import display button wid
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模

随机推荐

  • SQL Server不允许保存更改的解决方法

    点击上面的 工具 选项 在选项对话框中 点击 设计器 表设计器和数据库设计器 去掉 阻止保存要求重新创建表的更改 前面的勾 然后确定 好啦 再去试试吧 应该可以正常修改表的结构啦 o
  • 【NLP】第 2 章 : Transformers简介

    2017 年 12 月左右 发表了一篇题为 Attention Is All You Need 的开创性论文 这篇论文彻底改变了 NLP 领域在未来时代的面貌 本文描述了转换器和所谓的序列到序列架构 序列到序列 或 Seq2Seq 神经网络
  • Excel2013 利用phonetic函数将多行数据合并到同一单元格中

    场景 有一列邮箱数据 现在需要将他们合并到同一个单元格内 且邮箱之间要用英文的逗号隔开 以前五条邮箱为例 利用phonetic函数实现这种合并 合并结果 其中 E列是添加的辅助列
  • Python 调用Sikuli Jar包

    Python 调用Sikuli Python 目录 Sikuli简介 简要说明 环境设置 第一种 Jpype 第二种 Pyjnius 结论 目录 Sikuli简介 Sikuli是由MIT 麻省理工学院 研究团队发布的一种图形化编程技术 编程
  • 实现SSM简易商城项目的商品查询功能

    实现SSM简易商城项目的商品查询功能 介绍 在SSM Spring SpringMVC MyBatis 框架下 我们可以轻松地实现一个简易商城项目 本博客将重点介绍如何实现商品查询功能 帮助读者了解并掌握该功能的开发过程 步骤 1 创建数据
  • LeetCode-1306. Jump Game III

    Given an array of non negative integers arr you are initially positioned at start index of the array When you are at ind
  • 用Flask和Vue制作一个单页应用(自己学习)

    这里以一个简单的例子 展示如何把前端页面的增删改查请求 传递到后端进行数据的操作 一 https zhuanlan zhihu com p 311323583 二 https zhuanlan zhihu com p 311510196 三
  • 王者荣耀s15服务器维护,王者荣耀s15赛季更新全部内容

    原标题 王者荣耀s15赛季更新全部内容 王者荣耀S14很快就要结束了 体验服的版本更新也已经放出来进行测试了 大家都对新赛季的改动非常期待 究竟会有哪些英雄成为新的版本之子 哪些英雄会沦为下水道呢 以下均为体验服内容 不代表最终版本数据 p
  • 栈和队列 Stack and Queue

    Stack and Queue Stack and Queue Linked List Implementation ListNode Stack Queue Array Implementation Stack Queue Stack a
  • 又一巨头宣布入局AIGC,一口气开源数个模型,还道出了它的变现之道

    金磊 发自 凹非寺量子位 公众号 QbitAI AIGC AI生成内容 这个概念在今年可以说是火得一塌糊涂 例如Stable Diffusion 只要对它说一句话 唰唰唰 地就能秒生成画作 再如最近大火的ChatGPT 对答如流堪比人类 简
  • 学习day59

    昨天学了插槽 但是没有即笔记了 今天的是vuex 总体来说 vuex就是一个共享单车 每个人都可以使用他 也可也对他进行反馈 即把一个数据列为vuex 然后每个组件可以使用这个对象 也可也反过来反馈他 这一个设计是将A组件的一个数据作为公共
  • git报错

    Git报错总结 一 git remote add origin git code aliyun com account TestProject git发生报错 报错信息如下 error remote origin already exist
  • 输入三个字符串,要求找出其中的最大者

    解题思路 设一个二维的字符数组 大小为3 20 每一行存放一个字符串 字符串比较用strcmp 字符串复制用strcpy include
  • Shell脚本编程教程

    1 Shell脚本语言的基本结构 1 1 Shell脚本的用途 自动化常用命令 执行系统管理和故障排除 创建简单的应用程序 处理文本或文件 1 2 Shell脚本基本结构 Shell脚本编程 是基于过程式 解释执行的语言 编程语言的基本结构
  • jquery获取select选中的值

    误区 一直以为jquery获取select中option被选中的文本值 是这样写的 s text 获取所有option的文本值 实际上应该这样 s option selected text 获取选中的option的文本值 获取select中
  • 花费7元训练自己的GPT 2模型

    在上一篇博客中 我介绍了用Tensorflow来重现GPT 1的模型和训练的过程 这次我打算用Pytorch来重现GPT 2的模型并从头进行训练 GPT 2的模型相比GPT 1的改进并不多 主要在以下方面 1 GPT 2把layer nor
  • hexo设置博客的主题

    文章目录 一 设置博客的主题 二 设置博客的动态背景 一 设置博客的主题 1 登录 https hexo io themes 2 选择自己喜欢的个人主题 然后点击对应的主题 进入代码界面后 点击进入下面的按钮 然后进行保存 到对应的文件夹下
  • 【粉丝问答10】C语言关键字static的使用详解

    粉丝提问 粉丝问题 总结一下 关键字static的使用方法 要想搞清楚关键字static的使用方法 必须首先搞清楚 可执行程序段的分类以及各段在内存区的逻辑地址的映射 一 可执行程序内存分配 1 可执行程序程序分段 一个程序的3个基本段 t
  • 安卓常见内存泄露解决办法

    1 如果有打开Dialog 一定要在Activity的Destroy释放 否则有可能造成Activity异常退出时的内存泄露 Override protected void onDestroy super onDestroy if prog
  • 子串和子序列(python)

    子串 串中任意个连续的字符组成的子序列称为该串的子串 子序列 序列的一部分项按原有次序排列而得的序列 coding utf 8 1 连续子串最大和 def MaxSum arr res s arr 0 arr 0 for x in arr