当前位置: 首页 > news >正文

蓝桥杯第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;
}

  • 首先,代码声明了一些变量:

    • in 和 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%样例,大多数同学都用的该方法&#xff0c;就不过多赘述 #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&#xff1a;从零开始的力扣刷题生活 力扣题1&#xff1a;557. 反转字符串中的单词 III 解题思想&#xff1a;先读取单词&#xff0c;然后将单词进行翻转即可 class Solution(object):def reverseWords(self, s):""":type s…...

【软件测试】盘一盘工作中遇到的 Redis 异常测试

在测试工作中&#xff0c;涉及到与 redis 交互的场景变的越来越多了。关于redis本身就不作赘述了&#xff0c;网上随便搜&#xff0c;本人也做过一些整理。 今天只来复盘一下&#xff0c;在测试过程中与 redis 的二三事儿。其中提到的案例是经过抽象化的&#xff0c;用作辅助说…...

14.Oracle中RegExp_Like 正则表达式基本用法

--基本用法&#xff0c;是否包含某字符串 like %36% select * from k_micfo where regexp_like(loginid,36);if regexp_like(str,^[0-9\.]$) --只包含数字0-9&#xff0c;,小数点.--oracle判断字段是否是纯数字 (四种写法结果一样&#xff09; select * from k_micfo where r…...

Docker Swarm总结+Jenkins安装配置与集成(5/5)

博主介绍&#xff1a;Java领域优质创作者,博客之星城市赛道TOP20、专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。 &#x1f345;文末获取源码下载地址&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb;…...

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实现文件压缩打包&#xff0c;简单实例代码如下&#xff1a; import zipfilewith zipfile.ZipFile("archive.zip",w) as zipf:zipf.write("config.ini")zipf.write("test.py") 其中的模式 w表示如果没有该文件则创建该文件…...

如何创建百科?建立百科词条的意义何在?九问百科营销

在营销工作实践中&#xff0c;小马识途营销顾问经常接到关于百科营销的咨询&#xff0c;现整理了最受关注的九个问题分享给热爱营销工作的小伙伴。 一、什么是百科营销&#xff1f; 百科营销是借助百科知识传播&#xff0c;可以将企业、品牌、人物所拥有的对用户有价值的信息&a…...

Django如何设置时区为北京时间?

Django默认使用的是UTC时间&#xff0c;北京时间比UTC早8个小时&#xff0c;即如果UTC是凌晨两点&#xff0c;那么北京时间是早上八点。 Django中把setting.py中的语句&#xff1a; TIME_ZONE UTC修改为&#xff1a; TIME_ZONE Asia/Shanghai就把时区改为了北京时间。 这…...

Basemap地图绘制_Python数据分析与可视化

Basemap地图绘制 安装和使用地图投影地图背景在地图上画数据 Basemap是Matplotlib的一个子包&#xff0c;负责地图绘制。在数据可视化过程中&#xff0c;我们常需要将数据在地图上画出来。 比如说我们在地图上画出城市人口&#xff0c;飞机航线&#xff0c;军事基地&#xff0c…...

C#编程题分享(5)

判断质数问题 输⼊⼀个正整数&#xff0c;判断该数是否是质数。如果为质数输出 yes&#xff0c;如果不是输出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等格式的视频资源&#xff0c;而没有像上图这样的海报资源&#xff0c;那要怎样实现海报墙呢&#xff1f; 按照以前的方法&#xff0c;是可以通过The Movie Database的API Key来搜刮电影海报信息&#xff0c;但是现在这个方法不行了 现在介绍…...

【MODBUS】Modbus协议入门简介

Modbus&#xff08;Modicon Communication Protocol&#xff09;是一种用于工业自动化领域的通信协议&#xff0c;最初由Modicon&#xff08;现在是施耐德电气的一部分&#xff09;开发。Modbus协议被广泛应用于连接不同厂商的工业设备&#xff0c;实现设备之间的通信和数据交换…...

ORA-00257: archiver error. Connect internal only, until freed……

今天给客户测 试问题&#xff0c;让客户把数据发过来了。解压缩后一看&#xff0c;他们还是用的oracle 815版本的(他们exp导出时&#xff0c;带了导出日志&#xff0c;从导出日志中看出来是oracle 815版本的)&#xff0c;不过没有关系&#xff0c;低版本的exp是可以用高版本的i…...

继承 和 多肽(超重点 ! ! !)

[本节目标] 1.继承 2.组合 3.多肽 1.继承 1.1 为什么要继承 Java中使用类对现实世界中实体来进行描述&#xff0c;类经过实例化之后的产物对象&#xff0c;则可以用来表示现实中的实体&#xff0c;但是现实世界错综复杂&#xff0c;事物之间可能会存在一些关联&#xff0…...

H265、VP9、AV1视频编码器性能对比

1、背景介绍 目前在视频编解码器中,H264 已经成为绝对的主流,被大部分设备、浏览器所支持。虽然有更先进的编码器推出,但是受限于推广速度和设备支持成本,一直未能成为主流。 今年公司的目标是持续降本增效,现在将”屠刀“指向了视频业务的存储成本。视频文件存储主要两…...

C语言-结构体

---------------------------- ------------------ 岁月漫长心怀热爱&#xff0c;携手共赴星辰大海 --------今天来到我们自定义类型 -----结构体的讲解 目录 结构体的类型声明和初始化 结构体的类型声明 结构体成员的直接访问 结构体成员的间接访问 嵌套结构体进行访问 使用…...

C#拼夕夕自动化登录,电商网页自动化操作。WebView2

单纯靠WebView2是没办法通过JS实现自动登录操作的&#xff0c;包括浏览器插件&#xff0c;都不行&#xff0c;因为大公司对反爬机制控制的还是挺严格。 下面是实现效果&#xff0c;私信我&#xff0c;咨询解决方案。 20231202_153912 C#有偿Q群&#xff1a;927860652博客仅为…...

【Spring Boot 源码学习】BootstrapRegistryInitializer 详解

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

预览功能实现

需求&#xff1a;将后端返回来的文字或者图片和视频展示在页面上。 <!-- 预览 --><el-dialog title"预览" :visible.sync"dialogPreviewVisible" width"50%" append-to-body :close-on-click-modal"false" close"Previe…...

基于CircuitPython的电机动态性能测试系统:从原理到实践

1. 项目概述与核心价值搞电机驱动&#xff0c;最怕的就是“凭感觉”。你手上有个直流有刷电机&#xff0c;数据手册上写着空载转速12000转&#xff0c;堵转扭矩50mNm&#xff0c;但实际装到你的机器人关节或者小车上&#xff0c;带上传动机构&#xff0c;性能到底怎么样&#x…...

别再为FluidSIM 3.6安装报错头疼了!WinHEX找不到进程?看这篇保姆级图文教程就够了

FluidSIM 3.6安装疑难全解析&#xff1a;从报错修复到高效使用指南 当工科实验室的电脑屏幕再次弹出那个令人窒息的错误提示——"WinHEX找不到进程"&#xff0c;许多初次接触FluidSIM的师生都会陷入束手无策的困境。这款由德国Festo公司与帕德博恩大学联合开发的液压…...

3mux常见问题解决:10个用户最常遇到的错误及其修复方法

3mux常见问题解决&#xff1a;10个用户最常遇到的错误及其修复方法 【免费下载链接】3mux Terminal multiplexer inspired by i3 项目地址: https://gitcode.com/gh_mirrors/3m/3mux 3mux是一款受i3启发的终端复用器&#xff0c;为用户提供高效的终端窗口管理体验。然而…...

用两个三极管+稳压管,手把手教你搭一个简易5V LDO(附原理图、PCB与实测避坑)

用两个三极管稳压管搭建简易5V LDO&#xff1a;从原理图到实测的完整避坑指南 在电子设计领域&#xff0c;线性稳压器(LDO)是电源管理的基础模块。虽然市面上有大量成熟的LDO芯片&#xff0c;但用分立元件搭建一个简易LDO仍然是理解电源原理的绝佳实践。本文将带你用最常见的SS…...

ngx_http_read_request_header

1 定义 ngx_http_read_request_header 函数 定义在 ./nginx-1.24.0/src/http/ngx_http_request.cstatic ssize_t ngx_http_read_request_header(ngx_http_request_t *r) {ssize_t n;ngx_event_t *rev;ngx_connection_t *c;ngx_http_…...

MegSpot视觉对比工具:3个专业级视觉分析难题的终极解决方案

MegSpot视觉对比工具&#xff1a;3个专业级视觉分析难题的终极解决方案 【免费下载链接】MegSpot MegSpot是一款高效、专业、跨平台的图片&视频对比应用 项目地址: https://gitcode.com/gh_mirrors/me/MegSpot 作为一名视觉内容创作者或质量检测人员&#xff0c;你是…...

2025最权威的十大AI辅助写作助手推荐榜单

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在当下快节奏的学术钻研环境里头&#xff0c;做研究的人跟学生们时常会碰到时间紧张以及写作…...

AssetStudio实战指南:解锁Unity游戏资源的完整解决方案

AssetStudio实战指南&#xff1a;解锁Unity游戏资源的完整解决方案 【免费下载链接】AssetStudio AssetStudio - Based on the archived Perfares AssetStudio, I continue Perfares work to keep AssetStudio up-to-date, with support for new Unity versions and additional…...

ADAU1701(含A2B)的开发详解五:SigmaStudio实战技巧与模块高效应用

1. SigmaStudio模块查找的终极技巧 第一次打开SigmaStudio时&#xff0c;面对左侧密密麻麻的模块列表&#xff0c;我完全懵了。就像走进一个巨大的图书馆却找不到分类标签&#xff0c;ADI把200多个算法模块分散在30多个分类里&#xff0c;光Volume Controls下面就有12种音量调节…...

用字体绘制AI架构图:llama.ttf项目解析与OpenType字体技术实践

1. 项目概述&#xff1a;一个字体文件&#xff0c;为何能引发如此关注&#xff1f;最近在GitHub上&#xff0c;一个名为“fuglede/llama.ttf”的项目悄然走红&#xff0c;乍一看&#xff0c;这只是一个普通的字体仓库&#xff0c;但它的热度却远超许多复杂的软件库。作为一名长…...