目录
方法1
算法
示例
输出
方法二
的中文翻译为:
首页 后端开发 C++ 翻译:对于M个查询,反转给定字符串的范围

翻译:对于M个查询,反转给定字符串的范围

Aug 25, 2023 pm 08:09 PM
字符串 查询 反转

翻译:对于M个查询,反转给定字符串的范围

在这个问题中,我们将根据数组值对给定的字符串执行 M 次反向查询。

解决问题的简单方法是根据给定的数组值反转每个字符串段。

优化的方法使用的逻辑是,当我们将相同的子字符串反转两次时,我们得到原始字符串。

问题陈述 - 我们给出了一个包含字母字符的字母字符串。此外,我们还给出了一个大小为 M 的 arr[] 数组,其中包含正整数。我们需要对给定的字符串执行 M 次操作并返回最终的字符串。

在每个操作中,我们需要取出 arr[i] 并将子字符串 arr[i] 转换为 N − arr[i] + 1。

示例示例

输入

雷雷

输出

雷雷

解释 

  • 执行第一个查询后,字符串改为 'psrqt'。

  • 执行第二个查询后,我们得到了 'tqrsp'。

输入

雷雷

输出

雷雷

解释 − 如果我们对同一个查询执行偶数次,我们会得到相同的字符串。

输入

雷雷

输出

雷雷

解释 - 如果我们执行相同的查询奇数次,我们会得到相反的字符串。

方法1

在这种方法中,我们将使用reverse()方法来反转子字符串。我们将使用给定的查询获取起始和结束指针,并反转给定字符串的子字符串。

算法

步骤 1 - 开始遍历查询快照。

第2步 - 使用arr[p] - 1初始化'left'变量。

步骤 3 - 使用 str_len - arr[p] + 1 初始化“right”变量。

步骤 4 - 使用reverse()方法将子字符串从左指针反转到右指针。

示例

雷雷

输出

雷雷

时间复杂度 − O(N*M),用于反转子字符串 M 次。

空间复杂度 - O(1),因为我们不使用任何动态空间。

方法二

在这种方法中,我们将使用给定的查询计算该特定索引以及包含在反转中的次数。如果任何索引被包含偶数次,我们不需要反转它。如果在所有给定查询中任何索引包含奇数次,我们需要反转特定索引处的字符。

算法

步骤 1 -初始化长度等于字符串长度的 'cnt' 列表,用 0 存储特定索引在叉子中出现的次数。

步骤 2 - 遍历给定查询的数组,并根据当前查询获取字符串的左指针和右指针。

步骤3 - 还执行changeRange()函数,根据当前查询的左指针和右指针更新'cnt'列表。

步骤 3.1 - 在changeRange()函数中,增加“cnt”列表中“left”索引处的值。

第3.2步 - 减少“cnt”列表中位于“right + 1”光标右边的所有值。

这里,我们需要将‘cnt’列表中[左,右]范围内的所有值加1。因此,我们只将 cnt[left] 增加 1,因为采用前缀和将使所有值增加 1,即“左”索引的右侧。另外,我们不想增加 [right, str_len] 索引之间的 cnt 值,因此我们已经将其减 1,因为前缀和会将其增加 1。

步骤 4 - 接下来,执行 getPrefixSum() 函数来计算 ‘cnt’ 列表的前缀和。

步骤 4.1 - 在 getPrefixSum() 函数中,遍历字符串并将前一个元素的值添加到当前元素。

步骤 5 - 后面,以逆序遍历‘cnt’列表。如果当前元素是奇数,则将其追加到‘tmp’字符串中。

步骤 6 - 使用0初始化‘p’和‘q’,按照原始顺序遍历‘cnt’列表。

步骤 7 − 如果‘cnt’列表中的当前元素是奇数,则使用tmp[q]更新alpha[p]。

步骤 8 - 最后,返回字母字符串。

示例

的中文翻译为:

示例

雷雷

输出

雷雷

时间复杂度 − O(M*N + N),其中 O(M*N) 是根据查询更新 ‘cnt’ 列表,O(N) 是更新给定的字符串。

空间复杂度 - 使用 'cnt' 列表为 O(N)。

在第一个方法中,我们使用了reveres()方法来执行给定字符串上的所有查询。在第二个方法中,我们使用了外部技术来计算特定索引在生成中出现的次数.

以上是翻译:对于M个查询,反转给定字符串的范围的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

12306怎么查询历史购票记录 查看历史购票记录的方法 12306怎么查询历史购票记录 查看历史购票记录的方法 Mar 28, 2024 pm 03:11 PM

  12306订票app下载最新版是一款大家非常满意的出行购票软件,想去哪里就去那里非常方便,软件内提供的票源非常多,只需要通过实名认证就能在线购票,所有用户的出行车票机票都可以轻松买到,享受不同的优惠折扣。还能提前开启预约抢票,预约酒店、专车接送都是可以的,有了它想去哪里就去那里一键购票,出行更加简单方便,让大家的出行体验更舒服,现在小编在线详细为12306用户们带来查看历史购票记录的方法。  1.打开铁路12306,点击右下角我的,点击我的订单  2.在订单页面点击已支付。  3.在已支付页

学信网如何查询自己的学历 学信网如何查询自己的学历 Mar 28, 2024 pm 04:31 PM

学信网如何查询自己的学历?在学信网中是可以查询到自己的学历,很多用户都不知道如何在学信网中查询到自己的学历,接下来就是小编为用户带来的学信网查询自己学历方法图文教程,感兴趣的用户快来一起看看吧!学信网使用教程学信网如何查询自己的学历一、学信网入口:https://www.chsi.com.cn/二、网站查询:第一步:点击上方学信网地址,进入首页点击【学历查询】;第二步:在最新的网页中点击如下图箭头所示的【查询】;第三步:之后在新页面点击【的登陆学信档案】;第四步:在登陆页面输入信息点击【登陆】;

PHP中int类型转字符串的方法详解 PHP中int类型转字符串的方法详解 Mar 26, 2024 am 11:45 AM

PHP中int类型转字符串的方法详解在PHP开发中,经常会遇到将int类型转换为字符串类型的需求。这种转换可以通过多种方式实现,本文将详细介绍几种常用的方法,并附带具体的代码示例来帮助读者更好地理解。一、使用PHP内置函数strval()PHP提供了一个内置函数strval(),可以将不同类型的变量转换为字符串类型。当我们需要将int类型转换为字符串类型时,

python怎么重复字符串_python重复字符串教程 python怎么重复字符串_python重复字符串教程 Apr 02, 2024 pm 03:58 PM

1、首先打开pycharm,进入到pycharm主页。2、然后新建python脚本,右键--点击new--点击pythonfile。3、输入一段字符串,代码:s="-"。4、接着需要把字符串里面的符号重复20次,代码:s1=s*20。5、输入打印输出代码,代码:print(s1)。6、最后运行脚本,在最底部会看到我们的返回值:-就重复了20次。

Golang字符串是否以指定字符结尾的判断方法 Golang字符串是否以指定字符结尾的判断方法 Mar 12, 2024 pm 04:48 PM

标题:Golang中判断字符串是否以指定字符结尾的方法在Go语言中,有时候我们需要判断一个字符串是否以特定的字符结尾,这在处理字符串时十分常见。本文将介绍如何使用Go语言来实现这一功能,同时提供代码示例供大家参考。首先,让我们来看一下Golang中如何判断一个字符串是否以指定字符结尾的方法。Golang中的字符串可以通过索引来获取其中的字符,而字符串的长度可

Golang中如何检查字符串是否以特定字符开头? Golang中如何检查字符串是否以特定字符开头? Mar 12, 2024 pm 09:42 PM

Golang中如何检查字符串是否以特定字符开头?在使用Golang编程时,经常会遇到需要检查一个字符串是否以特定字符开头的情况。针对这一需求,我们可以使用Golang中的strings包提供的函数来实现。接下来将详细介绍如何使用Golang检查字符串是否以特定字符开头,并附上具体的代码示例。在Golang中,我们可以使用strings包中的HasPrefix

MySQL与PL/SQL的异同比较 MySQL与PL/SQL的异同比较 Mar 16, 2024 am 11:15 AM

MySQL与PL/SQL是两种不同的数据库管理系统,分别代表了关系型数据库和过程化语言的特点。本文将比较MySQL和PL/SQL的异同点,并附带具体的代码示例进行说明。MySQL是一种流行的关系型数据库管理系统,采用结构化查询语言(SQL)来管理和操作数据库。而PL/SQL是Oracle数据库特有的过程化语言,用于编写存储过程、触发器和函数等数据库对象。相同

如何在Go语言中截取字符串 如何在Go语言中截取字符串 Mar 13, 2024 am 08:33 AM

Go语言是一种强大且灵活的编程语言,它提供了丰富的字符串处理功能,包括字符串截取。在Go语言中,我们可以使用切片(slice)来截取字符串。接下来,将详细介绍如何在Go语言中截取字符串,并附上具体的代码示例。一、使用切片截取字符串在Go语言中,可以使用切片表达式来截取字符串的一部分。切片表达式的语法如下:slice:=str[start:end]其中,s

See all articles