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

【LeetCode:828. 统计子串中的唯一字符 | 贡献法 乘法原理】

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,CSDN-Java领域新星创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述

在这里插入图片描述

🍔 目录

    • 🚩 题目链接
    • ⛲ 题目描述
    • 🌟 求解思路&实现代码&运行结果
      • ⚡ 贡献法 & 乘法原理
        • 🥦 求解思路
        • 🥦 实现代码
        • 🥦 运行结果
    • 🚩 拓展练习
    • 💬 共勉

🚩 题目链接

  • 828. 统计子串中的唯一字符

⛲ 题目描述

我们定义了一个函数 countUniqueChars(s) 来统计字符串 s 中的唯一字符,并返回唯一字符的个数。

例如:s = “LEETCODE” ,则其中 “L”, “T”,“C”,“O”,“D” 都是唯一字符,因为它们只出现一次,所以 countUniqueChars(s) = 5 。

本题将会给你一个字符串 s ,我们需要返回 countUniqueChars(t) 的总和,其中 t 是 s 的子字符串。输入用例保证返回值为 32 位整数。

注意,某些子字符串可能是重复的,但你统计时也必须算上这些重复的子字符串(也就是说,你必须统计 s 的所有子字符串中的唯一字符)。

示例 1:

输入: s = “ABC”
输出: 10
解释: 所有可能的子串为:“A”,“B”,“C”,“AB”,“BC” 和 “ABC”。
其中,每一个子串都由独特字符构成。
所以其长度总和为:1 + 1 + 1 + 2 + 2 + 3 = 10
示例 2:

输入: s = “ABA”
输出: 8
解释: 除了 countUniqueChars(“ABA”) = 1 之外,其余与示例 1 相同。
示例 3:

输入:s = “LEETCODE”
输出:92

提示:

1 <= s.length <= 105
s 只包含大写英文字符

🌟 求解思路&实现代码&运行结果


⚡ 贡献法 & 乘法原理

🥦 求解思路
  1. 参考题解:【爪哇缪斯】图解LeetCode
🥦 实现代码
class Solution {public int uniqueLetterString(String s) {Map<Character, List<Integer>> index = new HashMap<Character, List<Integer>>();for (int i = 0; i < s.length(); i++) {char c = s.charAt(i);if (!index.containsKey(c)) {index.put(c, new ArrayList<Integer>());index.get(c).add(-1);}index.get(c).add(i);}int res = 0;for (Map.Entry<Character, List<Integer>> entry : index.entrySet()) {List<Integer> arr = entry.getValue();arr.add(s.length());for (int i = 1; i < arr.size() - 1; i++) {res += (arr.get(i) - arr.get(i - 1)) * (arr.get(i + 1) - arr.get(i));}}return res;}
}
🥦 运行结果

在这里插入图片描述

🚩 拓展练习

  1. 2262. 字符串的总引力
  2. 907. 子数组的最小值之和

💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

相关文章:

【LeetCode:828. 统计子串中的唯一字符 | 贡献法 乘法原理】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…...

字符串和内存函数(2)

文章目录 2.13 memcpy2.14 memmove2.15 memcmp2.16 memset 2.13 memcpy void* memcpy(void* destination, const void* source, size_t num); 函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。这个函数在遇到 ‘\0’ 的时候并不会停下来。如果so…...

毅速:复杂零件制造首选3D打印

确金属3D打印技术在制造行业的应用日益广泛&#xff0c;为制造业带来了巨大的变革和机遇。这种增材制造技术相较于传统制造工艺具有许多优势&#xff0c;尤其在制造复杂形状零件方面表现出色。 传统制造工艺在制造复杂形状零件时往往面临诸多挑战&#xff0c;如加工难度大、周期…...

【数据中台】开源项目(2)-Moonbox计算服务平台

Moonbox是一个DVtaaS&#xff08;Data Virtualization as a Service&#xff09;平台解决方案。 Moonbox基于数据虚拟化设计思想&#xff0c;致力于提供批量计算服务解决方案。Moonbox负责屏蔽底层数据源的物理和使用细节&#xff0c;为用户带来虚拟数据库般使用体验&#xff0…...

代理模式(常用)

代理模式&#xff08;代理设计模式&#xff09; 在有些情况下&#xff0c;一个客户不能或者不想直接访问另一个对象&#xff0c;这时需要找一个中介帮忙完成某项任务&#xff0c;这个中介就是代理对象。例如&#xff0c;购买火车票不一定要去火车站买&#xff0c;可以通过 123…...

redis(Remote Dictionary Service) 底层数据结构

redis 底层数据结构 动态字符串SDS 优点 获取字符串长度的时间复杂度O(1) 支持动态扩容&#xff0c;减少内存分配次数 新字符串小于1M – 新空间为扩展后字符串长度的两倍 1 新字符串大于1M – 新空间为扩展后字符串长度 1M 1. 内存预分配 二进制安全&#xff08;记录了…...

电子学会C/C++编程等级考试2021年06月(三级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:数对 给定2到15个不同的正整数,你的任务是计算这些数里面有多少个数对满足:数对中一个数是另一个数的两倍。 比如给定1 4 3 2 9 7 18 22,得到的答案是3,因为2是1的两倍,4是2个两倍,18是9的两倍。 时间限制:1000 内存限制…...

冥想第九百八十五天

1.周四&#xff0c;最近几天刷题的节奏太紧张了&#xff0c;放松一点&#xff0c;不能太大压力了&#xff0c;认证看&#xff0c;慢慢看效果会更好一点。 2.发现了一个跑步比较好的地方&#xff0c;沿着凯旋路&#xff0c;然后昭化路&#xff0c;种德桥路。一圈&#xff0c;刚好…...

Qt OpenGL固定管线与可编程管线

作者:令狐掌门 技术交流QQ群:675120140 csdn博客:https://mingshiqiang.blog.csdn.net/ 文章目录 在Qt框架中,你可以使用Qt的OpenGL模块(包括QOpenGLWidget和QOpenGLFunctions等类)来使用OpenGL进行图形渲染。以下是一个简单的示例,展示了如何在Qt应用程序中使用OpenGL绘…...

冯·诺依曼体系结构和操作系统

目录 一、冯诺依曼体系结构 1、初见结构 2、对体系结构的理解 3、总结 二、操作系统 1、概念 2、作用 一、冯诺依曼体系结构 1、初见结构 数学家冯诺依曼提出了计算机制造的三个基本原则&#xff0c;即采用二进制逻辑、程序存储执行以及计算机由五个部分组成&#xff08…...

Nginx(资源压缩)

建立在动静分离的基础之上&#xff0c;如果一个静态资源的Size越小&#xff0c;那么自然传输速度会更快&#xff0c;同时也会更节省带宽&#xff0c;因此我们在部署项目时&#xff0c;也可以通过Nginx对于静态资源实现压缩传输&#xff0c;一方面可以节省带宽资源&#xff0c;第…...

数据结构与算法之二叉树: LeetCode 226. 翻转二叉树 (Typescript版)

翻转二叉树 https://leetcode.cn/problems/invert-binary-tree/ 描述 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1 4 4/ \ / \2 7 >…...

lightdb-ignore_row_on_dupkey_index

LightDB 支持 ignore_row_on_dupkey_index hint LightDB 从23.4 开始支持oracle的 ignore_row_on_dupkey_index hint&#xff0c; 这个hint是用来忽略唯一键冲突的。类似与mysql的 insert ignore。 语法如下&#xff1a; 在LightDB中ignore_row_on_dupkey_index的效果等同于o…...

wangeditor实时预览

<template><div><!--挂载富文本编辑器--><div style"width: 45%;float: left;margin-left: 2%"><p>编辑内容</p><div id"editor" style"height: 100%"></div></div><div style"w…...

【前沿技术了解】web图形Canvas、svg、WebGL、数据可视化引擎的技术选型

目录 Canvas&#xff1a;HTML5新增 Canvas标签&#xff08;画布&#xff09; 渲染上下文canvas.getContext(contextType[, contextAttributes]) 上下文类型&#xff08;contextType&#xff09; 上下文属性 (contextAttributes) 示例 动画 setInterval(function, delay)…...

【Java】循环语句练习

文章目录 1. 计算5的阶乘2. 计算 1! 2! 3! 4! 5!3. 数字9 出现的次数4. 判定素数5. 求1-100之间的素数6. 求2个整数的最大公约数7. 计算分数的值8. 模拟登陆9. 输出乘法口诀表10. 求出0&#xff5e;999之间的所有“水仙花数”并输出11. 猜数字游戏&#x1f648; 1. 计算5的…...

「Verilog学习笔记」非整数倍数据位宽转换24to128

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 要实现24bit数据至128bit数据的位宽转换&#xff0c;必须要用寄存器将先到达的数据进行缓存。24bit数据至128bit数据&#xff0c;相当于5个输入数据第6个输入数据的拼接成一…...

2023亚太地区数学建模C题思路模型代码论文

C题的参考思路: 1&#xff0c;问题1的思路: 确定研究问题的主要指标体系(新能源电车的售出数量、安全性指标、充电桩数目、电池续 航里程等)&#xff0c;收集指标的对应数据&#xff0c;检验数据是否服从正态性: 若服从正态分布: 0&#xff0c;可考虑优先采用“多元方差分析”模…...

苹果商城App上架指南在中发里查看

苹果商城App上架指引可以在app应用分发平台网站上查看。具体步骤如下&#xff1a; 登录苹果开发者网站。进入“Certificates, Identifiers & Profiles”选项。在页面左侧选择“App Store Connect”。点击“App Store Connect”页面顶部的“Developer Guide”。在左侧菜单中…...

Android 框架层AIDL 添加接口

文章目录 AIDL的原理构建AIDL的流程往冻结的AIDL中加接口 AIDL的原理 可以利用ALDL定义客户端与服务均认可的编程接口&#xff0c;以便二者使用进程间通信 (IPC) 进行相互通信。在 Android 中&#xff0c;一个进程通常无法访问另一个进程的内存。因此&#xff0c;为进行通信&a…...

从‘抓不住’到‘抓得稳’:手把手教你用Gazebo Grasp_fix插件搞定Robotiq夹爪仿真(含物体建模技巧)

从‘抓不住’到‘抓得稳’&#xff1a;Gazebo Grasp_fix插件与Robotiq夹爪仿真实战指南 在机器人仿真领域&#xff0c;Gazebo作为一款强大的物理仿真工具&#xff0c;为开发者提供了测试和验证机器人算法的虚拟环境。然而&#xff0c;当涉及到机械臂抓取任务时&#xff0c;许多…...

告别黑盒!用MMDetection 3.x生成检测热力图,5分钟搞定论文级可视化

深度学习目标检测热力图可视化&#xff1a;5步打造学术级模型解释方案 在计算机视觉领域&#xff0c;目标检测模型的可解释性一直是研究者关注的焦点。当我们在学术论文或技术报告中展示检测结果时&#xff0c;传统的边界框往往难以直观呈现模型的注意力分布——而这正是热力图…...

从LLM到A2A:AI工程师必备7大核心概念解析,掌握AI未来!

从 LLM 到 A2A&#xff1a;AI 工程师必须掌握的七个核心概念 大模型 API Agent MCP Skill A2A 全景解析 你是否曾经困惑&#xff1a;调用一个大模型 API 和「部署一个 Agent」到底有什么本质区别&#xff1f;MCP 和 Skill 都是「能力扩展」&#xff0c;为什么需要两套机制…...

紧急预警:.NET 9 RC2已移除旧版LowCodeProvider——所有基于.NET 8低代码框架的项目须在2024年11月30日前完成迁移,否则将触发运行时降级熔断

第一章&#xff1a;.NET 9 低代码开发范式演进与熔断机制全景概览.NET 9 将低代码能力深度融入平台原生架构&#xff0c;不再依赖第三方可视化设计器&#xff0c;而是通过源生成器&#xff08;Source Generators&#xff09;、属性驱动的组件注册、以及声明式 UI 模型&#xff…...

OpenBCI WiFi Shield深度解析:Station模式 vs. Direct模式,如何根据你的实验场景做出最佳选择?

OpenBCI WiFi Shield深度解析&#xff1a;Station模式 vs. Direct模式&#xff0c;如何根据你的实验场景做出最佳选择&#xff1f; 在生物信号采集领域&#xff0c;稳定高效的数据传输是实验成功的关键。OpenBCI WiFi Shield作为专业级脑电/肌电采集设备的核心组件&#xff0c…...

突破网盘限速壁垒:本地化直链解析工具的全方位解决方案

突破网盘限速壁垒&#xff1a;本地化直链解析工具的全方位解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…...

Python AI服务上线倒计时:Cuvil预编译缓存机制如何帮你抢在竞品前24小时完成vLLM兼容升级?

第一章&#xff1a;Cuvil编译器在Python AI推理中的定位与价值Cuvil编译器是一个面向AI推理场景的轻量级、Python原生友好的编译框架&#xff0c;专为优化动态图模型&#xff08;如PyTorch TorchScript子集、ONNX子图及自定义算子图&#xff09;在CPU/GPU边缘设备上的执行效率而…...

C++的constinit常量初始化与静态存储期变量的启动时间优化

C的constinit常量初始化与静态存储期变量的启动时间优化 在现代C开发中&#xff0c;程序的启动性能优化是一个不可忽视的课题。尤其是静态存储期变量&#xff08;如全局变量或静态局部变量&#xff09;的初始化&#xff0c;往往会导致程序启动时间延长。为了解决这一问题&…...

ROS Noetic下用pcl_ros保存带反射强度的点云数据:从订阅话题到生成PCD文件全流程

ROS Noetic下高效保存带反射强度的点云数据实战指南 激光雷达点云数据中的反射强度信息往往蕴含着丰富的环境特征&#xff0c;对于SLAM建图、目标识别等应用至关重要。本文将手把手教你如何在ROS Noetic环境中&#xff0c;快速完成从实时话题订阅到PCD文件生成的完整流程&#…...

HER2-AuNPs,HER2靶向肽偶联金纳米粒,反应步骤

HER2-AuNPs&#xff0c;HER2靶向肽偶联金纳米粒&#xff0c;反应步骤HER2-AuNPs&#xff0c;HER2靶向肽偶联金纳米粒的描述与反应步骤一、引言金纳米粒&#xff08;AuNPs&#xff09;因其独特的光学性质、高比表面积、良好的生物相容性和表面功能化能力&#xff0c;在生物医学、…...