蓝桥杯第1037题子串分值和 C++ 字符串 逆向思维 巧解
题目
思路和解题方法
方案一——遍历+哈希表
仅能过60%样例,大多数同学都用的该方法,就不过多赘述
#include <iostream> #include <unordered_map> using namespace std; int main() {string s;cin >> s;int n = s.size();int res = n;for (int i = 0; i < n; ++i) {unordered_map<char, int> m;++m[s[i]];for (int j = i + 1; j < n; ++j) {++m[s[j]];res += m.size();}}cout << res;return 0; }
首先,代码声明了一些变量:
i
、n
和sum
是用于迭代、记录字符串长度和计算最终结果的变量,都被初始化为 0。a
是一个字符数组,用于存储输入的字符串,数组大小为 1000000。s
是一个长度为 26 的整型数组,用于记录每个小写字母最后一次出现的位置。通过
cin
输入字符串到数组a
中,并使用strlen
函数获取字符串a
的长度赋值给变量n
。使用
for
循环遍历字符串a
中的每一个字符:
- 在循环内部,根据公式
(i+1-s[a[i]-'a']) * (n-i)
更新变量sum
的值,其中:
i+1
表示当前字符在字符串中的位置(从 1 开始计数)。s[a[i]-'a']
表示当前字符最后一次出现的位置(将字母映射为数组索引)。(n-i)
表示以当前字符结尾的子串的个数。- 然后,将当前字符的位置信息
i+1
更新到数组s
中对应字母的位置上,以便后续计算时使用。最后,通过
cout
输出最终计算得到的结果sum
。代码
#include <iostream> #include <stdlib.h> #include <cstring> using namespace std; int main() {long long int i, n, sum = 0; // 声明变量 i,n,sum,并初始化 sum 为 0char a[1000000]; // 声明一个字符数组 a,用于存储输入的字符串,数组大小为 1000000int s[26] = {0}; // 声明一个长度为 26 的整型数组 s,用于记录每个小写字母最后一次出现的位置cin>>a; // 输入字符串到数组 a 中n = strlen(a); // 获取字符串 a 的长度for(i = 0; i < n; i++) // 遍历字符串 a{sum += (i+1-s[a[i]-'a']) * (n-i); // 根据公式更新 sum 的值s[a[i] - 'a'] = i+1; // 更新数组 s 中对应字母的位置信息}cout<<sum<<endl; // 输出最终计算得到的结果 sumreturn 0; }
复杂度
时间复杂度:
O(n)
时间复杂度:
- 输入字符串的长度为 n,因此遍历字符串的时间复杂度为 O(n)。
- 在循环内部,执行的操作是常数时间的,不随输入规模变化。
- 因此,整个代码的时间复杂度为 O(n)。
空间复杂度
O(1)
空间复杂度:
- 使用了常数大小的辅助变量和数组,不随输入规模变化。
- 因此,代码的空间复杂度为 O(1)。
总结起来,这段代码的时间复杂度为 O(n),空间复杂度为 O(1)。
觉得有用的话可以点点赞,支持一下。
如果愿意的话关注一下。会对你有更多的帮助。
每天都会不定时更新哦 >人< 。
相关文章:

蓝桥杯第1037题子串分值和 C++ 字符串 逆向思维 巧解
题目 思路和解题方法 方案一——遍历哈希表 仅能过60%样例,大多数同学都用的该方法,就不过多赘述 #include <iostream> #include <unordered_map> using namespace std; int main() {string s;cin >> s;int n s.size();int res n;for (int i 0…...

力扣题:字符串的反转-11.23
力扣题-11.23 [力扣刷题攻略] Re:从零开始的力扣刷题生活 力扣题1:557. 反转字符串中的单词 III 解题思想:先读取单词,然后将单词进行翻转即可 class Solution(object):def reverseWords(self, s):""":type s…...

【软件测试】盘一盘工作中遇到的 Redis 异常测试
在测试工作中,涉及到与 redis 交互的场景变的越来越多了。关于redis本身就不作赘述了,网上随便搜,本人也做过一些整理。 今天只来复盘一下,在测试过程中与 redis 的二三事儿。其中提到的案例是经过抽象化的,用作辅助说…...
14.Oracle中RegExp_Like 正则表达式基本用法
--基本用法,是否包含某字符串 like %36% select * from k_micfo where regexp_like(loginid,36);if regexp_like(str,^[0-9\.]$) --只包含数字0-9,,小数点.--oracle判断字段是否是纯数字 (四种写法结果一样) select * from k_micfo where r…...

Docker Swarm总结+Jenkins安装配置与集成(5/5)
博主介绍:Java领域优质创作者,博客之星城市赛道TOP20、专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。 🍅文末获取源码下载地址🍅 👇🏻 精彩专栏推荐订阅👇🏻…...

docker安装Sentinel zipkin
文章目录 引言I Sentinel安装1.1 运行容器1.2 DOCKERFILE 参考1.3 pom 依赖1.4 .yml配置(整合springboot)II 资源保护2.1 Feign整合Sentinel2.2 CommonExceptionAdvice:限流异常处理类III zipkin引言 消息服务和请求第三方服务可不配置Sentinel。 </...
利用python实现文件压缩打包的功能
主要是利用了zipfile实现文件压缩打包,简单实例代码如下: import zipfilewith zipfile.ZipFile("archive.zip",w) as zipf:zipf.write("config.ini")zipf.write("test.py") 其中的模式 w表示如果没有该文件则创建该文件…...
如何创建百科?建立百科词条的意义何在?九问百科营销
在营销工作实践中,小马识途营销顾问经常接到关于百科营销的咨询,现整理了最受关注的九个问题分享给热爱营销工作的小伙伴。 一、什么是百科营销? 百科营销是借助百科知识传播,可以将企业、品牌、人物所拥有的对用户有价值的信息&a…...
Django如何设置时区为北京时间?
Django默认使用的是UTC时间,北京时间比UTC早8个小时,即如果UTC是凌晨两点,那么北京时间是早上八点。 Django中把setting.py中的语句: TIME_ZONE UTC修改为: TIME_ZONE Asia/Shanghai就把时区改为了北京时间。 这…...

Basemap地图绘制_Python数据分析与可视化
Basemap地图绘制 安装和使用地图投影地图背景在地图上画数据 Basemap是Matplotlib的一个子包,负责地图绘制。在数据可视化过程中,我们常需要将数据在地图上画出来。 比如说我们在地图上画出城市人口,飞机航线,军事基地,…...
C#编程题分享(5)
判断质数问题 输⼊⼀个正整数,判断该数是否是质数。如果为质数输出 yes,如果不是输出no 样例输⼊113 输出yes int n Convert.ToInt32(Console.ReadLine()); int count 0; for (int i 1; i < n 1; i) {if (n % i 0) // 判断该数能被整除{coun…...

群晖Video Station 添加海报墙-新方法
海报墙 一般我们找到的都是mp4、mkv等格式的视频资源,而没有像上图这样的海报资源,那要怎样实现海报墙呢? 按照以前的方法,是可以通过The Movie Database的API Key来搜刮电影海报信息,但是现在这个方法不行了 现在介绍…...
【MODBUS】Modbus协议入门简介
Modbus(Modicon Communication Protocol)是一种用于工业自动化领域的通信协议,最初由Modicon(现在是施耐德电气的一部分)开发。Modbus协议被广泛应用于连接不同厂商的工业设备,实现设备之间的通信和数据交换…...

ORA-00257: archiver error. Connect internal only, until freed……
今天给客户测 试问题,让客户把数据发过来了。解压缩后一看,他们还是用的oracle 815版本的(他们exp导出时,带了导出日志,从导出日志中看出来是oracle 815版本的),不过没有关系,低版本的exp是可以用高版本的i…...

继承 和 多肽(超重点 ! ! !)
[本节目标] 1.继承 2.组合 3.多肽 1.继承 1.1 为什么要继承 Java中使用类对现实世界中实体来进行描述,类经过实例化之后的产物对象,则可以用来表示现实中的实体,但是现实世界错综复杂,事物之间可能会存在一些关联࿰…...
H265、VP9、AV1视频编码器性能对比
1、背景介绍 目前在视频编解码器中,H264 已经成为绝对的主流,被大部分设备、浏览器所支持。虽然有更先进的编码器推出,但是受限于推广速度和设备支持成本,一直未能成为主流。 今年公司的目标是持续降本增效,现在将”屠刀“指向了视频业务的存储成本。视频文件存储主要两…...

C语言-结构体
---------------------------- ------------------ 岁月漫长心怀热爱,携手共赴星辰大海 --------今天来到我们自定义类型 -----结构体的讲解 目录 结构体的类型声明和初始化 结构体的类型声明 结构体成员的直接访问 结构体成员的间接访问 嵌套结构体进行访问 使用…...
C#拼夕夕自动化登录,电商网页自动化操作。WebView2
单纯靠WebView2是没办法通过JS实现自动登录操作的,包括浏览器插件,都不行,因为大公司对反爬机制控制的还是挺严格。 下面是实现效果,私信我,咨询解决方案。 20231202_153912 C#有偿Q群:927860652博客仅为…...

【Spring Boot 源码学习】BootstrapRegistryInitializer 详解
Spring Boot 源码学习系列 BootstrapRegistryInitializer 详解 引言往期内容主要内容1. 初识 BootstrapRegistryInitializer2. 加载 BootstrapRegistryInitializer3. BootstrapRegistryInitializer 的初始化 总结 引言 书接前文《初识 SpringApplication》,我们从 …...

预览功能实现
需求:将后端返回来的文字或者图片和视频展示在页面上。 <!-- 预览 --><el-dialog title"预览" :visible.sync"dialogPreviewVisible" width"50%" append-to-body :close-on-click-modal"false" close"Previe…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...

算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...

【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
Monorepo架构: Nx Cloud 扩展能力与缓存加速
借助 Nx Cloud 实现项目协同与加速构建 1 ) 缓存工作原理分析 在了解了本地缓存和远程缓存之后,我们来探究缓存是如何工作的。以计算文件的哈希串为例,若后续运行任务时文件哈希串未变,系统会直接使用对应的输出和制品文件。 2 …...

未授权访问事件频发,我们应当如何应对?
在当下,数据已成为企业和组织的核心资产,是推动业务发展、决策制定以及创新的关键驱动力。然而,未授权访问这一隐匿的安全威胁,正如同高悬的达摩克利斯之剑,时刻威胁着数据的安全,一旦触发,便可…...