【LeetCode】2381、字母移位 II

news/2024/12/16 17:43:08/

【LeetCode】2381、字母移位 II

文章目录

  • 一、数据结构-差分-一维差分
    • 1.1 数据结构-差分-一维差分
  • 二、多语言解法

一、数据结构-差分-一维差分

1.1 数据结构-差分-一维差分

题目复述: 字符串s, 和shifts[]数组, 遍历每个shifts[i]来操作s, 操作如下:
每个shifts[i] 为 [starti, endi, directioni] 的三元组
把 s 中下标为 [starti, endi] 左比右闭区间的字母, 向前或向后偏移一个字符.
其中 若 directioni == 0 则向前偏移, 若 directioni == 1 则向后偏移

子区间的整体改变, 可联想到差分, 即差分数组两端的改变.

// go
func shiftingLetters(s string, shifts [][]int) string {n := len(s)diff := make([]int, n+1) // 差分数组, 注意大小为n+1for _, p := range shifts {start, end, dir := p[0], p[1], 2*p[2]-1 // 2*direction-1 使值域 [0,1] 变为 [-1,1]diff[start]+=dir // 意为 s[start...end] += dirdiff[end+1]-=dir // 同上}// 对差分数组, 求累加, 还原出原数组t := []byte(s)shift := 0 // s中下标为 i 的值, 累加为 shiftfor i := range t {shift += diff[i] // 位置i, 累加得到的偏移, 可正可负可零c := int(t[i]-'a') // 字符c对应的数字(值域0到26), 注意要强转为intgap := (c + shift%26 + 26) % 26 // 位置i, 最终字符, 的非负数数字表示. +26是为了使余数为非负数. shift%26是为了防止数字太大而溢出t[i] = byte('a' + gap) // 注意要强转为byte}return string(t)
}

灵神视频
灵神题解

二、多语言解法

C p p / G o / P y t h o n / R u s t / J s / T s Cpp/Go/Python/Rust/Js/Ts Cpp/Go/Python/Rust/Js/Ts

// cpp
// go 同上
# python
// rust
// js
// ts

http://www.ppmy.cn/news/1555636.html

相关文章

Undo 表空间和Redo 表空间

在数据库中,除了数据表空间、索引表空间分别用于存放表数据和索引文件之外,还有 Undo 表空间和Redo 表空间是两个用于支持事务处理和数据恢复的关键概念 1. Undo 表空间(撤销表空间): 作用: 存储用于回滚事…

支持自定义离线地图地理区域,查询组件及数据源功能增强,DataEase开源BI工具v2.10.3 LTS发布

2024年12月9日,人人可用的开源BI工具DataEase正式发布v2.10.3 LTS版本。 这一版本的功能变动包括:数据源方面,API数据源和Excel数据源支持对字段类型和长度进行设置;图表方面,离线类地图支持自定义地理区域设置&#…

【C/C++】事件驱动架构中,高性能位移操作事件状态位的优势

你提到的两个操作 combined_events ^ EVENT_ONE; 和 combined_events & ~EVENT_ONE; 是位操作中非常常见的两种方式,分别用于切换标志的状态和清除标志。下面我们详细解释这两种操作的工作原理,并通过具体的例子来说明它们是如何处理的。 1. 切换标…

opencv——图片矫正

图像矫正 图像矫正的原理是透视变换,下面来介绍一下透视变换的概念。 听名字有点熟,我们在图像旋转里接触过仿射变换,知道仿射变换是把一个二维坐标系转换到另一个二维坐标系的过程,转换过程坐标点的相对位置和属性不发生变换&a…

Spring Boot 配置多数据源并手动配置事务

Spring Boot 配置多数据源并手动配置事务 一、为什么多数据源需要手动配置?二、配置多数据源1. 数据源配置类 (DataSourceConfig)2. 主数据库 MyBatis 配置类 (PrimaryDbMyBatisConfig)3. 从数据库 MyBatis 配置类 (SecondaryDbMyBatisConfig)4. application.yml 配…

【数据分享】2013-2023年我国省市县三级的逐年CO数据(免费获取\excel\shp格式)

空气质量数据是在我们日常研究中经常使用的数据!之前我们给大家分享了2000-2023年的省市县三级的逐年PM2.5数据、2000-2023年的省市县三级的逐年PM10数据、2013-2023年的省市县三级的逐年SO2数据、2000-2023年省市县三级的逐年O3数据和2008-2023年我国省市县三级的逐…

MySQL 性能调优:打造高效数据库

SQL 语句层面的性能调优策略 合理选择字段属性 在创建 MySQL 表时,为了获取更好的性能,选择合适的字段属性至关重要。 首先,要依据实际情况合理设置字段的类型及宽度。例如,对于像手机号码这类固定长度为 11 位的字段&#xff…

SpringCloud微服务实战系列:01让SpringCloud项目在你机器上运行起来

目录 项目选型 项目安装-本地运行起来 软件安装: 项目启动: 总结&答疑 项目选型 软件开发,基本上都不会从0开始,一般都是在其他项目或者组件的基础上进行整合优化迭代,站在巨人肩膀上才能看得更远&#xff0c…