”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 通过循环增量使字符串成为子序列

通过循环增量使字符串成为子序列

发布于2025-05-01
浏览:859

2825。使用循环增量Make String a Subsequence Using Cyclic Increments使字符串成为子序列 [2 [2

您得到了两个

0- indexed

strings str1 and str2。

在str1中的索引的设置递增到下一个字符

循环

返回如果可以通过执行操作,以及false否则

,将str2成为str1的子序列。

注意:字符串的子序列是一个新的字符串,它是通过删除字符(可能没有的)而不打扰其余字符的相对位置而从原始字符串形成的新字符串。 [2

output:

说明:在str1中选择索引2。 成为'd'。 因此,str1变为“ abd”,而str2现在是一个子序列。因此,返回true。

[2

output:
  • 说明:在str1中选择索引0和1。
  • 因此,str1变为“ AD”,Str2现在是一个子序列。因此,返回true。
  • [2
    • false
    说明:
  • 在此示例中,可以证明不可能最多一次使用该操作使STR2成为STR1的子序列。

因此,返回false。

    [2
  • 1 5
  • 1 5 str1和str2仅由小写字母组成。
  • 暗示:
    • 考虑我们将分别递增的索引。
    • 我们可以维护两个指针:用于str1的指针I和sTR2指针J,同时确保它们保持在字符串的范围内。
    • 如果str1 [i]和str2 [j]匹配,或者增加str1 [i]匹配str2 [j],我们会增加两个指示器;否则,我们仅递增指针i。
    如果J处于str2的末尾,则可以使STR2成为str1的子序列,在我们找不到匹配项之后。

解决方案:

我们需要检查是否可以通过对STR1中的任何字符进行一次环状增量操作来使STR2成为STR1的子序列
    解释:
  • 我们将使用两个指针,用于str1和j for str2。
  • 如果str1 [i]上的字符匹配str2 [j],我们将两个指针向前移动。
  • 如果可以将str1 [i]递增以匹配str2 [j](循环),我们会尝试匹配它们,然后移动两个指针。 如果以上条件都不成立,我们只将指针i移动为str1。 最后,如果我们可以匹配str2的所有字符,那么可以使str2成为str1的子序列,否则不能。
  • 让我们在PHP中实现此解决方案: 2825。使用循环增量将字符串作为子序列。
    解释:

两个指针:i和j分别初始化为str1和str2的开始。

    :在循环中,我们检查str1 [i]和str2 [j]的字符是否相同,或者我们是否可以将str1 [i]递增以匹配str2 [j]。
  • 使用(ord($ str1 [$ i])1- ord('a'))%26处理环状递增条件,该数检查是否可以增加str1 [i]以匹配str2 [j]。
  • 子序列检查:如果我们完全通过str2迭代(即j == m),则表示str2是str1的子序列。否则,不是。
  • 时间复杂性:

算法一次通过str1迭代,并且仅检查str2中的每个字符一次,因此时间复杂度为,其中n是str1的长度。

    空间复杂性:
  1. 空间复杂性是
  2. o(1)
  3. ,因为我们只使用一些指针,并且不需要取决于输入大小的额外空间。
  4. 此解决方案有效地检查是否可以将STR2作为STR1的子序列,最多可以用一个环状增量操作。 [2
  5. 如果您发现此系列有帮助,请考虑在Github上给

如果您想要这样的更多有用的内容,请随时关注我: [2 [2

版本声明 本文转载于:https://dev.to/mdarifulhaque/2825-make-string-a-subsequence-using-cyclic-increments-4c8a?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何在无序集合中为元组实现通用哈希功能?
    如何在无序集合中为元组实现通用哈希功能?
    在未订购的集合中的元素要纠正此问题,一种方法是手动为特定元组类型定义哈希函数,例如: template template template 。 struct std :: hash { size_t operator()(std :: tuple const&tuple)const {...
    编程 发布于2025-05-02
  • 反射动态实现Go接口用于RPC方法探索
    反射动态实现Go接口用于RPC方法探索
    在GO 使用反射来实现定义RPC式方法的界面。例如,考虑一个接口,例如:键入myService接口{ 登录(用户名,密码字符串)(sessionId int,错误错误) helloworld(sessionid int)(hi String,错误错误) } 替代方案而不是依靠反射...
    编程 发布于2025-05-02
  • MySQL动态行转列技巧详解
    MySQL动态行转列技巧详解
    MySQL动态行转列操作 问题: 从多个表中检索数据,并将其格式化为动态列标题的透视表,即使事先不知道确切的列数。 原始查询: SELECT partners.name, products.name, COUNT(*) FROM sales JOIN products ON sales.prod...
    编程 发布于2025-05-02
  • 用户本地时间格式及时区偏移显示指南
    用户本地时间格式及时区偏移显示指南
    在用户的语言环境格式中显示日期/时间,并使用时间偏移在向最终用户展示日期和时间时,以其localzone and格式显示它们至关重要。这确保了不同地理位置的清晰度和无缝用户体验。以下是使用JavaScript实现此目的的方法。方法:推荐方法是处理客户端的Javascript中的日期/时间格式化和时...
    编程 发布于2025-05-02
  • 在UTF8 MySQL表中正确将Latin1字符转换为UTF8的方法
    在UTF8 MySQL表中正确将Latin1字符转换为UTF8的方法
    在UTF8表中将latin1字符转换为utf8 ,您遇到了一个问题,其中含义的字符(例如,“jáuòiñe”)在utf8 table tabled tablesset中被extect(例如,“致电。为了解决此问题,您正在尝试使用“ mb_convert_encoding”和“ iconv”转换受...
    编程 发布于2025-05-02
  • 在JavaScript中如何并发运行异步操作并正确处理错误?
    在JavaScript中如何并发运行异步操作并正确处理错误?
    同意操作execution 在执行asynchronous操作时,相关的代码段落会遇到一个问题,当执行asynchronous操作:此实现在启动下一个操作之前依次等待每个操作的完成。要启用并发执行,需要进行修改的方法。 第一个解决方案试图通过获得每个操作的承诺来解决此问题,然后单独等待它们: co...
    编程 发布于2025-05-02
  • JavaScript计算两个日期之间天数的方法
    JavaScript计算两个日期之间天数的方法
    How to Calculate the Difference Between Dates in JavascriptAs you attempt to determine the difference between two dates in Javascript, consider this s...
    编程 发布于2025-05-02
  • 在Java中如何高效匹配多行文本的正则表达式技巧
    在Java中如何高效匹配多行文本的正则表达式技巧
    在尝试在Java中使用JAVA中的正则表达式匹配多行文本时,使用多行文本匹配的正则表达式来使用某些考虑。模式.multiniline修饰符和(?m)速记似乎可以呈现出意外的结果。要理解行为,必须阐明修饰符的目的是必不可少的。 pattern.multiniline(?m)使锚点 ^(线的启动)和$...
    编程 发布于2025-05-02
  • 如何从Python中的字符串中删除表情符号:固定常见错误的初学者指南?
    如何从Python中的字符串中删除表情符号:固定常见错误的初学者指南?
    从python import codecs import codecs import codecs 导入 text = codecs.decode('这狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#带有...
    编程 发布于2025-05-02
  • eval()vs. ast.literal_eval():对于用户输入,哪个Python函数更安全?
    eval()vs. ast.literal_eval():对于用户输入,哪个Python函数更安全?
    称量()和ast.literal_eval()中的Python Security 在使用用户输入时,必须优先确保安全性。强大的python功能eval()通常是作为潜在解决方案而出现的,但担心其潜在风险。 This article delves into the differences betwee...
    编程 发布于2025-05-02
  • 为什么使用Firefox后退按钮时JavaScript执行停止?
    为什么使用Firefox后退按钮时JavaScript执行停止?
    导航历史记录问题:JavaScript使用Firefox Back Back 此行为是由浏览器缓存JavaScript资源引起的。要解决此问题并确保在后续页面访问中执行脚本,Firefox用户应设置一个空功能。 警报'); }; alert('inline Alert')...
    编程 发布于2025-05-02
  • 为什么不````''{margin:0; }`始终删除CSS中的最高边距?
    为什么不````''{margin:0; }`始终删除CSS中的最高边距?
    在CSS 问题:不正确的代码: 全球范围将所有余量重置为零,如提供的代码所建议的,可能会导致意外的副作用。解决特定的保证金问题是更建议的。 例如,在提供的示例中,将以下代码添加到CSS中,将解决余量问题: body H1 { 保证金顶:-40px; } 此方法更精确,避免了由全局保证金重置引...
    编程 发布于2025-05-02
  • 在PHP中如何高效检测空数组?
    在PHP中如何高效检测空数组?
    在PHP 中检查一个空数组可以通过各种方法在PHP中确定一个空数组。如果需要验证任何数组元素的存在,则PHP的松散键入允许对数组本身进行直接评估:一种更严格的方法涉及使用count()函数: if(count(count($ playerList)=== 0){ //列表为空。 } 对...
    编程 发布于2025-05-02
  • PHP阵列键值异常:了解07和08的好奇情况
    PHP阵列键值异常:了解07和08的好奇情况
    PHP数组键值问题,使用07&08 在给定数月的数组中,键值07和08呈现令人困惑的行为时,就会出现一个不寻常的问题。运行print_r($月份)返回意外结果:键“ 07”丢失,而键“ 08”分配给了9月的值。此问题源于PHP对领先零的解释。当一个数字带有0(例如07或08)的前缀时,PHP将...
    编程 发布于2025-05-02
  • PHP与C++函数重载处理的区别
    PHP与C++函数重载处理的区别
    作为经验丰富的C开发人员脱离谜题,您可能会遇到功能超载的概念。这个概念虽然在C中普遍,但在PHP中构成了独特的挑战。让我们深入研究PHP功能过载的复杂性,并探索其提供的可能性。在PHP中理解php的方法在PHP中,函数超载的概念(如C等语言)不存在。函数签名仅由其名称定义,而与他们的参数列表无关。...
    编程 发布于2025-05-02

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3