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

深圳 商城 网站建设php建设网站工具

深圳 商城 网站建设,php建设网站工具,公司网络营销推广方案,老鹰网营销型网站建设题目链接:https://leetcode.cn/problems/replace-the-substring-for-balanced-string/description/ 思路 题目意思 这题意思是一个只含有[Q, W, E, R] 四个字符的字符串s且长度一定是 4的倍数, 需要你通过替换子串,使他变成一个「平衡字符…

在这里插入图片描述
题目链接:https://leetcode.cn/problems/replace-the-substring-for-balanced-string/description/

思路

题目意思

这题意思是一个只含有[Q, W, E, R] 四个字符的字符串s且长度一定是 4的倍数, 需要你通过替换子串,使他变成一个「平衡字符串」,也就是字符串s内四个字符的数量都相等。

首先要仔细审题,我刚开始是以为计算需要替换的字符的数量,秒wa,仔细阅读发现是替换连续子串,需要找到一个最小长度的替换连续子串,第一反应就是滑动窗口或者双指针。

算法小课堂
滑动窗口:滑动窗口是双指针的一种特例,可以称为左右指针,在任意时刻,只有一个指针运动,而另一个保持静止。滑动窗口路一般用于解决特定的序列中符合条件的连续的子序列的问题。
滑动窗口的时间复杂度是线性的,时间复杂度一般为O(n),滑动窗口的左右边界都不会向左滑动,向左滑动等于走回头路,是一种回溯的算法,很可能会陷入死循环。滑动窗口是一种全遍历问题,一定会遍历到末尾的。

方法:滑动窗口 + 哈希表

刚开始我们用哈希表统计出四个字符的数量,我们需要满足「平衡字符串」,所以定义一个 check函数 判断四个字符数量小于等于 n / 4。

  • 如果原始的 s 就是 「平衡字符串」,则返回 0。
  • 如果不是,接下来就是用滑动窗口来遍历字符串,找到待替换子串,来维护区间 [l,r) :
    • 当前 l 指针不动, 通过内循环移动 r 指针,循环条件 r 指针需小于字符串s长度并且check函数满足,直到找到待替换子串。
    • 如果找到了使得条件被满足的 r,我们用 r−l 来更新答案 ans,当前 r 指针不动,并使得 l向右移动一个单位进行下一次枚举,通过外循环移动 l 指针, 循环条件 l 指针需小于字符串s长度,使当前代替换子串合法并且最小。
    • 直到 r 指针移动到大于等于字符串s长度的位置,且check函数不满足,退出循环。

代码示例

func balancedString(s string) int {n := len(s)mp := make(map[byte]int)for _, v := range s {mp[byte(v)]++}// 判断当前字符串是否是平衡字符串check := func() bool {if mp['Q'] > n / 4 || mp['W'] > n / 4 ||mp['E'] > n / 4 || mp['R'] > n / 4 {return false}return true}if check() {return 0}r, ans := 0, len(s)// 滑动窗口for l, c := range s {for r < n && !check() {mp[s[r]]--r++}// 如果上面循环是 r >= n 条件退出,// 表示现在的连续子串是不满足替换条件的,可以直接退出,避免影响正确答案if !check() {break}ans = min(ans, r - l)mp[byte(c)]++}return ans
}func min(a, b int) int {if a > b {return b}return a
}

在这里插入图片描述

复杂度分析

  • 时间复杂度:O(n),其中n表示字符串s的长度,记录四个字符的数量需要遍历字符串s,所需时间为O(n),滑动窗口时间是线性的,所以所需时间也为O(n)。
  • 空间复杂度:O(1),不需要额外申请空间。
http://www.yayakq.cn/news/640244/

相关文章:

  • 如何在阿里云上做网站网站运营与建设
  • 做淘宝客网站用什么程序最好衡阳房产网
  • 网站基础功能介绍ui设计原理
  • 织梦官方网站图文排版模板
  • 做果蔬零售的网站教育机构客户管理系统
  • 网站服务器怎么做安全防护网页版传奇有哪些
  • 网站建设 佛山徐州cms模板建站
  • 手机 网站制作如何做网站卖连接
  • 怎样做自己的vip解析网站微企点建好网站后要怎么做
  • 网站如何添加统计代码楼盘网站开发
  • 网站建设制作 南京公司匿名聊天网站怎么做
  • 使页面具有动态效果的网站建设技术是天元建设集团有限公司中标情况分析
  • 网站开发 网站设计一站式织梦网站模板
  • 手机怎么查看网站代码实现的榆林北京网站建设
  • 微网站栏目设置能够做外贸的网站有哪些问题
  • 做婚恋网站有哪些邯郸市建设局官方网站
  • 做电脑网站用什么软件网站在线优化
  • 网站培训培训班风铃制作
  • 企业网站托管服务公司一个服务器下怎么做两个网站吗
  • 网站的安全建设或者解决方案大门户wordpress主题门户新闻
  • 维修保养网站开发上google必须翻墙吗
  • 专业酒店建设信息网站wordpress 添加widget
  • 网站建设兼职薪酬怎么样成都宅天下装饰公司怎么样
  • 公职人员可以做网站吗梁山做网站价格
  • 买服务器做网站主机帮别人备案网站吗
  • 福州建设厅网站做ppt选小图案的网站
  • 优化网站的公司哪家好舟山城乡建设部网站首页
  • 建设网站ppt有做货 物的网站吗
  • 冬青街 做网站多用户开源系统哪个好
  • 小程序建站平台对战平台网站怎么建设