C++滑动窗口算法_最短连续包含子串

C++滑动窗口算法_最短连续包含子串滑动窗口算法在一个特定大小的字符串或数组上进行操作,而不在整个字符串和数组上操作,这样就降低了问题的复杂度,从而也达到降低了循环的嵌套深度。如下题给你两个长度相同的字符串,s和t。将s中的第i个字符变到t中的第i个字符需要|s[i]-t[i]|的开销(开销可能为0),也就是两个字符的ASCII码值的差的绝对值。用于变更字符串的最大预算是maxCost。在转化字符串时,总开销应当小于等于该预算,这也意味着字符串的转化可能是不完全的。如果你可以将s的子字符串转

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

滑动窗口算法在一个特定大小的字符串或数组上进行操作,而不在整个字符串和数组上操作,这样就降低了问题的复杂度,从而也达到降低了循环的嵌套深度。

如下题

给你两个长度相同的字符串,s 和 t。
将 s 中的第 i 个字符变到 t 中的第 i 个字符需要 |s[i] – t[i]| 的开销(开销可能为 0),也就是两个字符的
ASCII 码值的差的绝对值。

用于变更字符串的最大预算是 maxCost。在转化字符串时,总开销应当小于等于该预算,这也意味着字符串的转化可能是不完全的。

如果你可以将 s 的子字符串转化为它在 t 中对应的子字符串,则返回可以转化的最大长度。

如果 s 中没有子字符串可以转化成 t 中对应的子字符串,则返回 0。

示例 1:

输入:s = “abcd”, t = “bcdf”, cost = 3 输出:3 解释:s 中的 “abc” 可以变为 “bcd”。开销为
3,所以最大长度为 3。 示例 2:

输入:s = “abcd”, t = “cdef”, cost = 3 输出:1 解释:s 中的任一字符要想变成 t
中对应的字符,其开销都是 2。因此,最大长度为 1。 示例 3:

字符串s 字符串t 开销 最大长度
[a] b c d [b] c d f 1 1
[a b] c d [b c] d f 2 2
[a b c] d [b c d] f 3 3
a [b c d] b [c d f] 4 3

只需要返回窗口的大小就是该开销可以转化的最大长度

代码如下

class Solution { 
   
public:
    int equalSubstring(string s, string t, int maxCost) 
    { 
   
        int left = 0;   // 窗口左边界
        int cost = 0;   // 当前窗口消耗
        // i作为窗口右边界
        for (int i = 0; i < s.size(); i++)
        { 
   
            cost += std::abs(s[i] - t[i]);
            // 如果当前窗口消耗大于总开销,则左边界++,缩减窗口
            if (cost > maxCost)
            { 
   
                cost -= std::abs(s[left] - t[left]);
                left++;
            }
        }
        return s.size() - left;
    }
};

Jetbrains全家桶1年46,售后保障稳定

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219095.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python数据类型有哪些?

    Python数据类型有哪些?数据类型是每种编程语言必备属性,只有给数据赋予明确的数据类型,计算机才能对数据进行处理运算,因此,正确使用数据类型是十分必要的,不同的语言,数据类型类似,但具体表示方法有所不同,以下是Python编程常用的数据类型:1.数字类型Python数字类型主要包括int(整型)、long(长整型)和float(浮点型),但是在Python3中就不再有long类型了。int(整型)在32位…

    2022年6月10日
    33
  • 启动Redis报错:Could not create Server TCP listening socket *:6379: bind: Address already in use–解决办法

    启动Redis报错:Could not create Server TCP listening socket *:6379: bind: Address already in use–解决办法最后一句提示:6379地址已经在使用(6379是redis默认的端口)如图我自己输入指令./redis-server显示Redis已经开启服务1)正常解决方法三部①通过指令找到redis进程,查看所有关于它的进程详情。ps-ef|grefredisroot308610Apr24?00:00:07./bin/redis-…

    2022年6月7日
    51
  • VS Code注释快捷键[通俗易懂]

    VS Code注释快捷键[通俗易懂]单行注释:Ctrl+/或先按CTRL+K,再按CTRL+U取消单行注释:Ctrl+/或先按CTRL+U,再按CTRL+K块注释Alt+Shift+A

    2022年8月15日
    11
  • 神经网络激活函数汇总(Sigmoid、tanh、ReLU、LeakyReLU、pReLU、ELU、maxout)

    神经网络激活函数汇总(Sigmoid、tanh、ReLU、LeakyReLU、pReLU、ELU、maxout)神经网络激活函数汇总(Sigmoid、tanh、ReLU、LeakyReLU、pReLU、ELU、maxout)常规sigmoid和tanhsigmoid特点:可以解释,比如将0-1之间的取值解释成一个神经元的激活率(firingrate)缺陷:有饱和区域,是软饱和,在大的正数和负数作为输入的时候,梯度就会变成零,使得神经元基本不能更新。只有…

    2025年5月25日
    2
  • 下载安装cygwin_ansys17安装教程详细

    下载安装cygwin_ansys17安装教程详细windows下安装cygwin软件详细过程

    2025年6月18日
    4
  • python实现量化交易策略

    python实现量化交易策略python实现量化交易策略1前言相信大家都听说过股票,很羡慕那些炒股大佬,觉得量化投资非常高深,本文教大家用python实现简单的量化交易策略。2构建策略炒股是一个概率游戏,强如巴菲特也没办法保证这只股票一定能涨。我们能做的是买入上涨概率高的股票,不碰那些下跌概率高的股票。在股票市场中有很多上市公司,有些公司是领导者,有些是追随者,比如白酒行业中贵州茅台(600519)、新能源概念中宁德时代(300750)等都是领导者。我们可以观察这些股票的走势,来判断同行业同概念中其他公司股票价格的走势。基

    2022年6月26日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号