LeetCode 940. 不同的子序列 II(动态规划)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给定一个字符串 S,计算 S 的不同非空子序列的个数。

因为结果可能很大,所以返回答案模 10^9 + 7.

示例 1:
输入:"abc"
输出:7
解释:7 个不同的子序列分别是 "a", "b", "c", "ab", "ac", "bc", 以及 "abc"。示例 2:
输入:"aba"
输出:6
解释:6 个不同的子序列分别是 "a", "b", "ab", "ba", "aa" 以及 "aba"。示例 3:
输入:"aaa"
输出:3
解释:3 个不同的子序列分别是 "a", "aa" 以及 "aaa"。提示:
S 只包含小写字母。
1 <= S.length <= 2000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/distinct-subsequences-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

class Solution {
public:int distinctSubseqII(string S) {int n = S.size(), mod = 1e9+7;vector<int> dp(n+1, 0);dp[0] = 1;//空字符串vector<int> prev(26, -1);// 之前最近的相同字符 posfor(int i = 0; i < n; i++) {dp[i+1] = (dp[i]*2)%mod;// 当前字符跟之前的结合,不结合,产生的方案数if(prev[S[i]-'a'] != -1)// 之前有重复的 相同字符,会产生重复计数dp[i+1] = (dp[i+1]-dp[prev[S[i]-'a']]+mod)%mod;prev[S[i]-'a'] = i;//更新最近的字符位置}return dp[n]-1;}
};

0 ms 7.1 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473209.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Jmeter]Jmeter环境搭建

Jmeter环境搭建 1、 拷贝 \\szpc1450\apache-jmeter-2.7 整个目录到本机(我是放在D盘&#xff0c;以下路径说明以D盘为例) 2、 拷贝\\szpc1450\Tools\autotest softwares\jdk-6u11-windows-i586-p.exe到本机之后进行安装 安装完毕之后添加环境变量 JAVA_HOME C:\Program File…

Python获取磁盘使用信息,python获取GPU信息,python根据进程号获取进程信息,pynvml 获取GPU信息,psutil 获取进程信息,系统信息等

一、工具&#xff1a;psutil模块 psutil是一个跨平台模块&#xff0c;试用相应方法可以直接获取计算机CPU&#xff0c;内存&#xff0c;磁盘&#xff0c;网络等资源使用情况&#xff1b;可以使用我们学习知识与这模块用来做系统监控&#xff0c;性能分析&#xff1b;如果大家熟…

LeetCode 907. 子数组的最小值之和(单调栈)

文章目录1. 题目2. 解题1. 题目 给定一个整数数组 A&#xff0c;找到 min(B) 的总和&#xff0c;其中 B 的范围为 A 的每个&#xff08;连续&#xff09;子数组。 由于答案可能很大&#xff0c;因此返回答案模 10^9 7。 示例&#xff1a; 输入&#xff1a;[3,1,2,4] 输出&a…

Python环境下,提高pip安装库速度的方法!

一、前言 学习 Python 的话&#xff0c;仅掌握标准库是远不够的&#xff0c;有很多好用的第三方库我们也需要用到的 大家发现 pip install 包名 的方式 安装第三方库的时候&#xff0c;下载速度很慢&#xff0c;有时还会超时&#xff0c;遇到第三方库比较大时候&#xff0c;…

静态变量与静态方法

1&#xff0e;静态变量在C#程序中&#xff0c;没有全局变量的概念&#xff0c;这意味着所有的成员变量只有该类的实例才能操作这些数据&#xff0c;这起到了“信息隐藏”的作用。但有些时候&#xff0c;这样做却不是个明智的选择。假设我们要定义一个图书类&#xff0c;要求该类…

LeetCode 792. 匹配子序列的单词数(二分查找)

文章目录1. 题目2. 解题1. 题目 给定字符串 S 和单词字典 words, 求 words[i] 中是 S 的子序列的单词个数。 示例: 输入: S "abcde" words ["a", "bb", "acd", "ace"] 输出: 3 解释: 有三个是 S 的子序列的单词: "…

利用Python从字幕网上下载自己所需要的字幕(热门电影、美剧等)

一、前言 主要需求&#xff1a;利用python从字幕库网站上下载字幕 字幕网址&#xff1a;http://www.zimuku.la/ 二、方法&#xff1a; 1、打开网站&#xff0c;搜索自己所需要的字幕&#xff1a; 2、开始写代码&#xff1a; a、配置标头&#xff0c;手动输入下载的字幕名字…

ASP.NET开发,简化与封装

微软的ASP.NET的开发&#xff0c;就是面向对象的编程&#xff0c;当然前端也能体验至面向对象的话&#xff0c;使用Web控件也必须的。任一控件&#xff0c;我们均可以在后端.aspx.cs或.aspx.vb程序中new一个对象出来。很多场合里&#xff0c;在开发ASP.NET开发中&#xff0c;后…

调用Django中的API时,使用Pycharm给后端view打断点的方法

一、前言 使用Pycharm写后端很便捷&#xff0c;但是项目运行后&#xff0c;无法找到简洁的debug方法&#xff0c;本文主要以图文形式&#xff0c;说明一下利用Postman与Pycharm来给项目debug 二、方法 1、使用Pycharm打开项目文件&#xff0c;点击右上角&#xff0c;编辑配置文…

[Kaggle] Spam/Ham Email Classification 垃圾邮件分类(BERT)

文章目录1. 数据处理2. 下载预训练模型3. 加载数据4. 定义模型5. 训练6. 提交测试结果练习地址&#xff1a;https://www.kaggle.com/c/ds100fa19 相关博文&#xff1a; [Kaggle] Spam/Ham Email Classification 垃圾邮件分类&#xff08;spacy&#xff09; [Kaggle] Spam/Ham E…

python 中main函数总结

Python使用缩进对齐组织代码的执行&#xff0c;所有没有缩进的代码&#xff08;非函数定义和类定义&#xff09;&#xff0c;都会在载入时自动执行&#xff0c;这些代码&#xff0c;可以认为是Python的main函数。 每个文件&#xff08;模块&#xff09;都可以任意写一些没有缩进…

python从图片里提取主要颜色

一、需求&#xff1a; 从一张图片里提取主要的几种颜色 二、效果&#xff1a; 三、代码 from PIL import Image, ImageDraw, ImageFontdef get_dominant_colors(infile):image Image.open(infile)# 缩小图片&#xff0c;否则计算机压力太大small_image image.resize((80, …

LeetCode 790. 多米诺和托米诺平铺(动态规划)

文章目录1. 题目2. 解题1. 题目 有两种形状的瓷砖&#xff1a; 一种是 2x1 的多米诺形&#xff0c; 另一种是形如 “L” 的托米诺形。 两种形状都可以旋转。 XX <- 多米诺XX <- "L" 托米诺 X给定 N 的值&#xff0c;有多少种方法可以平铺 2 x N 的面板&…

Django后端编辑图片提取主要颜色API

一、需求 前端页面需要调用后端API&#xff0c;实现获取主要颜色json数据 二、图片效果 三、代码实现&#xff1a; # Create your views here. import os from django.core.files.storage import default_storage from django.http import HttpResponse, JsonResponse from …

js:获取本周日期

<html> <head> <script> function formOnload() { //按周日为一周的最后一天计算var date new Date();var this_day date.getDay(); //今天是这周的第几天var step_s -this_day1; //上周日距离今天的天数&#xff08;负数表示&#xff09;if (this_day 0…

LeetCode 898. 子数组按位或操作(前缀和思想)

文章目录1. 题目2. 解题2.1 超时解2.2 正解1. 题目 我们有一个非负整数数组 A。 对于每个&#xff08;连续的&#xff09;子数组 B [A[i], A[i1], ..., A[j]] &#xff08; i < j&#xff09;&#xff0c;我们对 B 中的每个元素进行按位或操作&#xff0c;获得结果 A[i] …

Linux命令行配置静态IP地址

一、前言 IP地址分为了A-E共计5类地址&#xff0c;其中A、B、C在全球范围内统一分配&#xff0c;D、E为特殊地址。 A类地址&#xff1a;第一段为网络号&#xff0c;剩下三段都是主机号&#xff0c;最大主机数1600W&#xff0c;私有IP地址是10.0.0.0-10.255.255.255 B类地址&…

C#中用委托实现C++的回调函数

C中抓图回调函数 void (CALLBACK* DisplayCBFun)(long nPort,char * pBuf,long nSize,long nWidth,long nHeight,long nStamp,long nType,long nReceaved)); C#中定义为委托 public delegate void DisplayCBFun(int nPort, IntPtr pBuf, int nSize, int nWidth, int nHeight, …

天池 在线编程 回合制游戏(前缀和)

文章目录1. 题目2. 解题1. 题目 QW 是一个回合制游戏的玩家&#xff0c;今天他决定去打怪。 QW 在一场战斗中会碰到 n 个怪物&#xff0c;每个怪物有攻击力 atk[i]&#xff0c;每回合结束时如果第 i 个怪物还活着&#xff0c;就会对 QW 造成 atk[i] 的伤害。 QW 只能在每回合…

Python程序员的圣经——《Python编程快速上手:让繁琐工作自动化》尾末附下载地址

一、前言 如今&#xff0c;人们面临的大多数任务都可以通过编写计算机软件来完成。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。通过Python编程&#xff0c;我们能够解决现实生活中的很多任务。 今天给大家分享一份Python程序员的圣经——《Python编程快…