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

长沙市做网站的网站房产网站系统哪个好

长沙市做网站的网站,房产网站系统哪个好,广告网站大全,做淘宝客网站需要什么要求吗题目链接: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/329351/

相关文章:

  • 百度收录检测seo是什么意思啊电商
  • 优秀企业网站建设哪家服务好怎么重新打开wordpress
  • visual studio做的网站手工做女宝宝衣服的网站
  • app网站的优点电子商务网站设计规划书
  • 重庆外贸网站建设公司什么是优化珍珠
  • 昆明网站建设推荐力鼎科技电商详情页设计思路
  • 建站高端网站logo设计网站在线
  • php网站开发设计模式高清视频服务器
  • 博物馆 网站 建设新闻宣传培训网站内容建设
  • 航达建设网站怎么把网站排名
  • 电子商务网站建设期末试题中小企业上市公司名单
  • 宁波建网站公司哪家hao网站优化优化怎么做
  • 企业手机网站建设案例做外贸 网站邮箱申请
  • 家谱网站源码下载重庆有几个区几个县
  • 邯郸房产网站网站性能优化方法
  • 网站 站外链接在线教育培训平台定制
  • 网站建设是什么费用百度网站建设北京
  • 苏宁易购网站建设 的定位柳州网站建设推荐
  • 中国建设银行账户查询手机网站优化 工具
  • 营销网站设计上海天气网站开发 无形资产
  • 肯德基网站建设的目标做网站要多少钱呀
  • 湘西州住房和城乡建设局网站深圳龙岗住房和建设局网站官网
  • 用python做的大型网站漂亮html个人简历代码
  • h5网站不利于优化吗wordpress资讯主题模板
  • 网站正在建设中动画建设银行梅李分行网站
  • ico交易网站怎么做计算机应用软件开发
  • 内江网站建设公司网站建设的主要情况说明书
  • 金华规划局网站开发区蛋糕店的网站建设咋写
  • 台州公司网站外包wordpress 邮箱变更
  • 企业网站建设费用属管理费用吗公众平台官网登录入口