蓝桥杯寒假集训第五天(子串分值和)

news2024/10/5 13:13:56

没有白走的路,每一步都算数🎈🎈🎈

题目描述:

输入一个字符串,然后计算所有连续子串中没有重复字母的个数

输入描述:

第一行:

一个字符串

输出描述:

所有子串中没有重复字母的个数

样例输入输出:

样例输入:

ababc

样例输出:

28

算法讲解:

理论知识

  1. 先统计字符串中每个字母在所有可能出现的子串中的个数
  2. 将每个字母出现的次数相加即可
  3. AC代码
#子串分值和
import os
import sys
s = input()
count = 0
a = [-1 for i in range(26)]
for i in range(len(s)):
    index = ord(s[i])-ord('a')
    count+=(len(s)-i)*(i-a[index])
    a[index] = i

print(count) 

图解文说:

以测试案例ababc为例:

ababc

  • 子串中包含a字母的串的个数有5个,分别为:a,ab,aba,abab,ababc

 

 第一个a的字母的前面没有字母,那么后面的b,ba,bab,babc都能和第一个a链接形成一个新的子串

  • 子串中包含第一个b字母的串的个数有4*2 = 8个

第一组:b,bc,bcb,bcbc

第二组:ab,aba,abab,ababc

为什么会有两组,因为b的位置在第二个,前面有一个a可以再次拼接

  • 子串中包含第二个a字母的串的个数有3*2 = 6个

第一组:a,b,c

第二组:ba,bab,babc

为什么会是两组,因为a的位置在第三个,前面有一个b可以再次拼接,但是前面的a不能再次计算,会重复

  • 子串中包含第二个b字母的串的个数为2*2 = 4个

第一组:b,bc

第二组:ab,abc

上述同理

  • 子串中包含第一个字母c的串的个数为1*5 = 5个,分别为:c,bc,abc,babc,ababc

上述同理

统计可得5+8+6+4+5 =28

现在的这段代码的意思也很明了。

index = ord(s[i])-ord('a')
count+=(len(s)-i)*(i-a[index])

这段代码的第一行的ord是为了得到字母的ASCII码值,然后(len(s)-i)即为默认都会有的长度,会随着字母在字符串中的位置增大而减小,(i-a[index])即表示组数。两者的乘积即为此字母在所有字符子串中出现的个数。

最后累计,就为所输出的值

每日一句

摘自《《晚熟的人》》:

人类的幸福是建立在痛苦基础上的,美好的事物之所以美好,是因为丑陋事物的存在。

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

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

相关文章

软件设计模式---结构型模式

结构型模式 结构型模式概述 结构型模式描述如何将类或者对象结合在一起形成更大的结构,就像搭积木,可以通过简单积木组合形成复杂的、功能更更为强大的结构 结构型模式可以分为类结构型模式和对象结构型模式 类结构型模式关心类的组合,由多…

1、Java多线程技能基础

文章目录第一章 Java多线程技能1.1进程和线程的定义以及多线程的优点1.2 使用多线程1.2.1继承Thread类1.2.2常见的3个命令分析线程的信息方法一\:cmdjsp方法二\:jmc.exe方法三:jvisualcm.exe1.2.3 线程随机性的展现1.2.4 执行start()的顺序不代表执行run()的顺序1…

hcip第五天实验

拓扑图 每台路由器都有两个环回,一个24的环回,一个32的环回;32的环回用于建邻,24的环回用于用户网段,最终所有24的环回可以ping通。 实验步骤 1.配置ip 2.让2,3,4号设备的IGP协议可以通信 3.两两之间建立BGP邻居关…

DR_CAN基尔霍夫电路题解法【自留用】

无目录如图所示电路,输入端电压eie_iei​,输出端电压eoe_oeo​,求二者之间关系。 对其中元件进行标号,并将电流环路标号,指出各元件的压降方向: v值得注意的是: 1)电阻R2R_2R2​同时…

rabbitmq消息发送的可靠性:结合mysql来保证消息投递的可靠性

消息从生产者到Broker,则会触发confirmCallBack回调消息从exchange到Queue,投递失败则会调用returnCallBack 用一张表来记录发送到mq的每一条消息,方便发送失败需要重试。status: 1-正常,0-重试,2-失败。发…

【计算机视觉】OpenCV 4高级编程与项目实战(Python版)【1】:图像处理基础

目录 1. OpenCV简介 2. OpenCV开发环境搭建 3. 读取图像 4. 读取png文件出现警告 5. 显示图像 6. 保存图像 7. 获取图像属性 本系列文章会深入讲解OpenCV 4(Python版)的核心技术,并提供了大量的实战案例。这是本系列文章的第一篇&…

简单了解计算机的工作原理

文章目录一.计算机操作系统二.进程/任务三、进程控制块抽象(PCB)四、进程调度相关属性五、内存管理一.计算机操作系统 概念:操作系统是一组做计算机资源管理的软件的统称. 目前常见的操作系统有:Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列…

百度安全在线查询,网站弹出风险提示怎么处理

站长们要避免网站打开弹出风险提示,需要要时刻关注自己的网站是否存在风险,时刻知道自己的网站是不是安全的。 百度安全在线查询步骤: 1、打开站长工具 2、添加需要查询的网站域名。 3、勾选百度安全。 4、点击开始查询。 等…

22个Python的万用公式分享

在大家的日常python程序的编写过程中,都会有自己解决某个问题的解决办法,或者是在程序的调试过程中,用来帮助调试的程序公式。小编通过几十万行代码的总结处理,总结出了22个python万用公式,可以帮助大家解决在日常的py…

再学C语言22:循环控制语句——循环嵌套和数组处理

嵌套循环&#xff08;nested loop&#xff09;&#xff1a;在一个循环内使用另一个循环 一、循环嵌套 示例代码&#xff1a; #include <stdio.h> int main(void) {int i;int j;for(i 0; i < 10; i){for(j 0; j < 9; j){printf("%5d", j); // 里面的…

共享模型之管程(二)

1.Moniter对象 1.1.Java对象头 1>.以32位虚拟机为例 ①.普通对象 Klass Word表示对象的类型,它是一个指针,指向了对象所从属的class; ②.数组对象 在32位虚拟机中,integer包装类型的长度为12个字节,而int基本数据类型的长度为4个字节; 其中Mark Word结构为: 2>.64位…

shell第一天练习

题目&#xff1a; 1、在当前主机编写脚本文件history_max.sh显示主机中执行频率最高的前5个命令。 2、判断主机是否存在rhel用户&#xff0c;如果存在则设置密码为redhat,如果不存在则创建用户并设置密码。 3、通过设置变量HISTTIMEFORMAT&#xff0c;使得当执行history命令时…

16. BootStrap

文章目录一、Bootstrap1、概念2、快速入门二、响应式布局三、CSS样式和JS插件1、全局CSS样式2、组件1. 导航条2. 分页条3、插件1. 轮播图四、案例1、案例描述2、案例分析3、实现一、Bootstrap 1、概念 * 概念&#xff1a; 一个前端开发的框架&#xff0c;Bootstrap&#xff0…

Linux网络配置(如何设置静态IP?如何设置查看主机名?)

文章目录Linux网络配置一、网络地址配置1.1. 查看网络地址1.2. 测试两个地址是否连接1.3. Linux系统的网络配置二、主机名以及hosts映射2.1. 查看和设置主机名2.2. hosts映射2.3. DNSLinux网络配置 一、网络地址配置 如果在一台Windows电脑上安装了Linux虚拟机&#xff0c;那…

颤抖开篇,从php角度谈谈IO模型(BIO)

颤抖开篇&#xff0c;从php角度谈谈IO模型&#xff08;BIO&#xff09; IO 是什么? 在计算机系统中I/O就是输入&#xff08;input&#xff09;和输出&#xff08;Output&#xff09;的意思。针对不同的操作对象&#xff0c;可以划分为磁盘I/O模型&#xff0c;网络I/O模型&am…

开发神器VSCode配置C/C++编译环境

hi&#xff0c;小伙伴们大家好&#xff0c;今天给大家介绍一款程序员常用的开发神器VSCode&#xff0c;想必大家肯定有所了解&#xff0c;也有很多小伙伴在日常工作中经常使用。当木荣君初次见到VSCode时&#xff0c;真正的被它惊艳到了&#xff0c;可以说是一见钟情。从此就爱…

13.6-14.8读书笔记

13.6 对象移动 13.6.1 右值引用 概念: 为了支持移动操作,新标准引入了的一种新的引用类型.所谓右值引用就是必须绑定到右值的引用. 通过&&来获得右值引用 int i 42;int &r i;int &&rr i; // 错误,不能将一个右值引用绑定到一个左值上int &r3 …

【python基础_05】面向对象

文章目录1. 类和对象1.1 使用对象组织数据的模版1.2 成员变量和成员方法1.3 实现代码2. 内置方法&#xff08;魔术方法&#xff09;2.1 构造方法&#xff1a;__init__&#xff08;&#xff09;1. 类和对象 1.1 使用对象组织数据的模版 1.2 成员变量和成员方法 1.3 实现代码 1…

jupyter notebook无法启动内核

jupyter notebook无法启动内核问题概述方法一使用Window PowerShell方法二更改文件路径重新启动内核参考问题概述 遇到的问题是在使用jupyter的时候无法正常运行,所以在这里尝试一些办法,在这里进行记录,希望能够帮助到大家 方法一 使用Window PowerShell 首先第一个方法就…

Java IO流 - 释放资源的方式

资源释放的方式 书接上文, 在上一篇文章我们做过一个文件拷贝的练习, 但是在联系中是有释放资源隐患的的, 例如在下面代码中, 在文件释放之前有许多行的逻辑代码; 如果这许多行的逻辑代码有报错, 导致程序不运行, 那么资源就得不到释放 public static void main(String[] args)…