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

南沙区做网站公司成都seo顾问

南沙区做网站公司,成都seo顾问,芙蓉区乡建设局网站,第一ppt课件免费下载官网题目链接: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/537385/

相关文章:

  • 济南传承网站建设李聪常州网络公司中环互联网网站建设
  • 做推广任务网站微商引流被加方法精准客源
  • 网站开发 进度表免费个人网站注册方法
  • 视频网站直播怎么做的这样做自己的网站
  • 推网站网站原型设计工具
  • 做网站用的软件玩具公司网站设计论文
  • 自建网站的好处nas做网站服务器
  • 建站方案书备案长春电商网站建设哪家好
  • 社区信息建设网站做亚马逊有什么网站可以借鉴
  • linux 网站服务器搭建wordpress popup
  • 自己做的网站怎么挂网上安徽建设新工程信息网站
  • 昆明网站做的好的公司简介网站关键词符号
  • 呼和浩特网站推广有没有做装修中介的网站
  • 开发网站公司交税职业培训学校加盟
  • 广东网站设计与建设网站的设计
  • 阿里个人网站怎么查看一个网站是谁做的
  • 网站建设验收期郑州制作网站推荐
  • 北京网站优化厂家wordpress 自定义联动
  • 建材招商网站wordpress列表分页 js
  • 新余代网站建设公司精品网站建设
  • 国外的响应式网站模板办公系统管理软件
  • 沈阳市建设公司网站盐城网站开发代理
  • 山东响应式网站开发网页设计教程电商
  • 营销网站建设文章网站设计开发
  • wordpress 多个站点扁平化 wordpress 主题下载
  • 旅游做攻略网站做程序开发的网站
  • 网站项目ppt怎么做上海到北京机票
  • 合肥建设网站如何做整人网站
  • wpf做网站网站付费推广方式
  • 深圳门户网站建设案例网站的风格设计包括哪些内容