力扣767.重构字符串

力扣767.重构字符串

  • 将每个字母的出现次数存在哈希表中

    • 按出现次数排序
    • 如果最大的次数 > 其他次数之和 + 1,说明最终一定不会有合法答案
    • 从最大次数开始 先放偶数下标 再放奇数下标
cpp 复制代码
  class Solution {
  public:
      string reorganizeString(string s) {
          int n = s.size();
          unordered_map<char,int> cnt;
          for(char c:s)
              cnt[c] ++;
          
          vector<pair<char,int>> a(cnt.begin(),cnt.end());
         	//语法 自定义按次数排序
          ranges::sort(a,[](const auto&p,const auto&q)
          {
              return p.second > q.second;
          });
          int m = a[0].second;
          if(m > n - m + 1)
              return "";
          
          string res(n,0);
          int i = 0;
          for(auto [ch,cur] : a)
          {
              while(cur -- )
              {
                  res[i] = ch;
                  i += 2;
                  if(i >= n)
                      i = 1;
              }
          }
          return res;
      }
  };
相关推荐
tudousisi2229 分钟前
01背包8.21
数据结构·算法
ZJU_统一阿萨姆25 分钟前
【算子开发】Reduction算子完全指南
人工智能·算法·语言模型
青 春 记 忆33 分钟前
LeetCode 155. 最小栈|Python 解法详解
开发语言·python·leetcode
鹿角片ljp9 小时前
LeetCode 46. 全排列|吃透回溯
算法·leetcode·职场和发展
鼎艺创新科技9 小时前
不依赖 UE/Unity:我们如何从零搭建一套国产三维 GIS 渲染引擎
人工智能·算法·unity·游戏引擎·三维电子沙盘
SNOWPIAOP11 小时前
双 RTX 5090 + DSH + Qwen 3.8:本地 Agent 已经能稳定完成复杂软件重构
重构·qwen3.8·dsh·双5090
.道阻且长.12 小时前
11.LeetCode算法习题讲解--滑动窗口--将x减到0的最小操作数
算法·leetcode·职场和发展
wenyq712 小时前
LeetCode 2460. Apply Operations to an Array
算法·leetcode
.格子衫.13 小时前
032动态规划之区间DP——算法备赛
算法·动态规划
青 春 记 忆13 小时前
LeetCode 142. 环形链表 II|Python 解法详解
python·leetcode·链表