力扣1234.替换子串得到平衡字符串

力扣1234.替换子串得到平衡字符串

  • 由题意可知 超过n/4的字母是一定要替换的

    • 所以只要找到一段包含超过n/4个字母的最小区间即可
    • 转换为去除这个最小区间后 4种字母的出现频率都<=n/4
cpp 复制代码
  class Solution {
  public:
      int balancedString(string s) {
          unordered_map<char,int> cnt;
          int n = s.size(),m = n/4,res=n;
          for(int i=0;i<s.size();i++)
              cnt[s[i]] ++;
          //如果已经满足要求 直接return
          if (cnt['Q'] == m && cnt['W'] == m && cnt['E'] == m && cnt['R'] == m)
              return 0;
          //枚举右端点
          for(int i=0,j=0;i<n;i++)
          {
              //放入区间 同时删去
              cnt[s[i]] --;
              //满足要求
              while (cnt['Q'] <= m && cnt['W'] <= m && cnt['E'] <= m && cnt['R'] <= m)
              {
                  res = min(res,i-j+1);
                  //左端点加回来
                  cnt[s[j++]]++;
              }
          }
          return res;
      }
  };
相关推荐
用户37215742613517 分钟前
Java 设置 Word 文档编辑限制并允许指定区域编辑
java
船厂电气自动化ai大模型28 分钟前
AI大模型与数学·第57课 傅里叶全套工具链综合实战:串联级数/连续变换/DFT/FFT,图像、音频、扩散模型完整例题
数据结构·人工智能·深度学习·算法·机器学习
宠友信息38 分钟前
社区类源码开发实践中的仿小红书系统技术要点分析
java·spring boot·redis·mysql·uni-app·vue·内容运营
用户3721574261351 小时前
Java 设置 PDF 表单域只读或扁平化
java
人工智能培训1 小时前
人工智能数据安全下的个人信息保护实践方案
大数据·人工智能·算法·生活
元启数宇2 小时前
幕墙AI设计算法逻辑:元启数宇如何智能分格
人工智能·算法
luteres2 小时前
Spring学习笔记
java·后端·spring
宵时待雨2 小时前
优选算法专题16:多源BFS
算法·宽度优先
南城以南溫暖如初1472 小时前
从零搭建24小时自助健身系统:技术选型与核心模块实战
java·spring boot·redis·mysql·vue·mybatis
重生之后端学习2 小时前
53. 最大子数组和[中等]✅
java·数据结构·算法·leetcode·职场和发展