当前位置: 首页 > 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.15wanjia.com/news/193621.html

相关文章:

  • 网站建设作番禺网站建设开发
  • 站酷设计网页版wordpress 热门 tags
  • 论坛门户网站开发网页设计二级页面
  • 专门做蛋糕的网站重庆网站开发解决方案
  • 站内营销推广方式杭州公司牌照申请条件
  • 泉州网站制作做网站页面对PS切图
  • 河南郑州网站顾问网页设计师岗位分析
  • 丝芙兰网站做的好差动易会提示模版文件"默认网站首页问答模板.html"找不到
  • 红叶网站建设方案网站 成本
  • 白云商城网站建设全屋定制十大名牌排行榜
  • 网站原创文章在哪里找东莞市网络seo推广价格
  • 余姚建设网站网址短链接在线生成
  • 团购做的比较好的网站电商网站前端模板
  • 推广网站出现中性产品如何制作聊天软件
  • 怎么用htlm5自己做网站百度搜索引擎排行榜
  • 珠海网站设计平台广州建设集团股份有限公司
  • 鲜花网站建设的项目介绍网站产品后台界面怎么做
  • 商城类网站开发wordpress图片点击放大
  • 国内免费商用图片的网站上海开发小程序和app的公司
  • 专业外贸网站制作wordpress这个博客
  • 巴中网站建设开发公司邢台seo招聘
  • 温州网站优化指导wordpress首页无法看到后台登录
  • 泰安受欢迎的网站建设安徽省建设工程信息网平台官网
  • 网站制作能赚多少钱移动端网站教程
  • 中国工程建设标准化协会官方网站泰州企业网站建设
  • 发布网站的空间网站打开是404
  • 怎么推广我的网站包头网站建设平台广和
  • 微信网站开发js框架用幽默的语言来形容网站开发
  • 上云网站做等保短租网网站开发 项目背景
  • 做最好最全的命理网站制作公司网页的步骤