940. 不同的子序列 II

简介: 用一个数组存储26个字母结尾的字符串数量,all加上之前的all,如果出现过相同的字母,就减去数组中的相同字母的数来到b,all=2空串和{b}来到第一个c,newAll=2,all=4,记录c:2来到第2个c,newAll=4,all=8因为c有记录,因此all要减2,

文章目录

前言

解题思路

没有重复字符的时候

有重复字符的时候

代码

前言

给定一个字符串 s,计算 s 的 不同非空子序列 的个数。因为结果可能很大,所以返回答案需要对 10^9 + 7 取余 。


字符串的 子序列 是经由原字符串删除一些(也可能不删除)字符但不改变剩余字符相对位置的一个新字符串。


例如,“ace” 是 “abcde” 的一个子序列,但 “aec” 不是


来源:力扣(LeetCode)

链接:https://leetcode.cn/problems/distinct-subsequences-ii

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


解题思路

没有重复字符的时候


新的子串为{1}


2到来,新加{2},{1,2}


3到来,数量是之前的2倍

{3},{1,3},{2,3},{1,2,3}


有重复字符的时候




第二个1到来,重复了{1},因此新增数量为1




第三个1来了,重复了2个




因此可以推出,假设之前出现的字母的数量为X=100;

那么当下一次出现相同字母的数量为

all=perAll(上一个位置的all)+newAll(如果不重复字母新增的数量)-X;


用一个数组存储26个字母结尾的字符串数量,

all加上之前的all,如果出现过相同的字母,就减去数组中的相同字母的数




来到b,all=2

空串和{b}

来到第一个c,newAll=2,all=4,记录c:2


来到第2个c,newAll=4,all=8

因为c有记录,因此all要减2,


代码

class Solution {

   public int distinctSubseqII(String s) {

       if (s == null || s.length() == 0) {

  return 0;

 }

       char[] str=s.toCharArray();

       int all=1;

       int mod=1000000007;

       int[] map=new int[26];

       for(int i=0;i<str.length;i++){

           int newAll=all;

           int curAll=(all+newAll)%mod;

           all=(curAll-map[str[i]-'a']+mod)%mod;

           map[str[i]-'a']=newAll;

       }

       return all-1;

   }

}


目录
相关文章
|
Web App开发 Shell 数据安全/隐私保护
CURL常用命令
下载单个文件,默认将输出打印到标准输出中(STDOUT)中 curl http://www.centos.org 通过-o/-O选项保存下载的文件到指定的文件中: -o:将文件保存为命令行中指定的文件名的文件中 -O:使用URL中默认的文件名保存文件到本地 1 # 将文件下载到本地并命名为mygettext.
8606 0
|
小程序 JavaScript
微信小程序向左滑动删除操作(类仿微信、QQ)
微信小程序向左滑动删除操作(类仿微信、QQ)
440 0
|
6月前
|
人工智能 自然语言处理 监控
2025 精选|免费 AI Agent 工具大盘点,轻松搞定日常琐事与商业流程
2025年,AI Agent成科技热点,免费工具助力个人与企业提效。本文盘点多款实用免费AI Agent,涵盖效率、协作、数据分析等场景,重点推荐从RPA进化而来的商业级工具实在Agent,助你轻松入门智能自动化时代。
2972 9
|
网络协议
udhcpc 参数使用说明
当没有网络的时候,板子一直发送dhcp请求,导致程序不往下执行,解决的办法是把它切换到后台运行,可是如何切换到后台呢,有办法,它自带参数可以实现该功能。如下:   udhcpc -b -i eth0 -p /var/run/udhcpc.pid -R解释一下,-b就是切换到后台指令,-i是指定使用哪个网络接口,双网卡的时候一定要使用它来指定eth0  or  eth1。
2991 0
|
5月前
|
人工智能 弹性计算 异构计算
2026年阿里云gpu云服务器活动参考:T4、V100、A10卡包月5折起,包年4折起
2026年阿里云推出GPU云服务器优惠活动,涵盖T4、V100、A10等多规格实例,活动截止到3月31日。活动对象为阿里云实名认证用户,新用户首购可享包年包月4折起、按量付费最长100小时1折起的优惠。具体型号与价格如gn7i-c32g1.8xlarge(A10卡)3213.99元/月起,gn6v-c8g1.2xlarge(V100卡)3830元/月起。活动支持包年包月与按量付费两种模式,满足AI训练、图形渲染等多场景需求,助力用户低成本开启AIGC之旅。
2155 2
|
3月前
|
域名解析 弹性计算 运维
阿里云轻量应用服务器介绍:产品介绍、适用场景、收费标准、活动价格
阿里云轻量应用服务器是可以快速搭建且易于管理的轻量级云服务器,面向单台服务器提供了一键部署应用、一站式域名解析、安全管理以及运维监控等服务。轻量应用服务器操作简单便捷,能让您快速上手部署简单的应用。本文为大家介绍了阿里云轻量应用服务器产品详情、适用场景、收费标准与活动价格。
|
3月前
|
机器学习/深度学习 人工智能 搜索推荐
1688新方向丨 读懂1688 AI排序,让产品只给对的人看!
1688搜索生态正由“关键词堆砌”迈向“AI意图洞察”。AI深度识别买家身份、需求与偏好,按文本相关性、商品质量、商家实力、个性化匹配四大维度排序。商家需转向用户价值创造,以优质产品和服务赢得AI精准推荐。
|
3月前
|
前端开发
前端开发 之 15个炫酷按钮特效下【附完整源码】
本篇文章内容展示了多颜色内波纹按钮、彩虹色外波纹按钮、手绘风格式按钮等众多炫酷按钮特效,并给出了完整代码及注释
384 7
|
2月前
|
人工智能 数据可视化 JavaScript
【含新版安装包】Windows 平台 OpenClaw 一键安装部署详细教程
OpenClaw(虾壳云版)是轻量级AI聊天网关工具,Windows可视化一键部署,无需命令行与手动配置,内置全部依赖,5分钟完成安装。适配Win10/11 64位,纯英文路径安装,关闭杀软即可流畅运行,小白也能轻松上手自动化任务。
|
2月前
|
消息中间件 Dubbo 网络协议
2026性能测试选型指南:4款多协议压测平台实测对比,告别工具切换焦虑!
2026年多协议性能测试面临HTTP、MQTT、Dubbo、MQ等混用难题。本文对比泽众POne(一站式易用)、JMeter(插件灵活但运维重)、开源工具(免费基础)及商业专家(协议全但部署复杂)四类方案,强调“没有完美工具,只有最优匹配”,助力团队按协议需求、技术栈与预算精准选型。(239字)

热门文章

最新文章