每日OJ题_贪心算法四⑧_力扣767. 重构字符串

目录

力扣767. 重构字符串

解析代码


力扣767. 重构字符串

767. 重构字符串

难度 中等

给定一个字符串 s ,检查是否能重新排布其中的字母,使得两相邻的字符不同。

返回 s 的任意可能的重新排列。若不可行,返回空字符串 "" 。

示例 1:

输入: s = "aab"
输出: "aba"

示例 2:

输入: s = "aaab"
输出: ""

提示:

  • 1 <= s.length <= 500
  • s 只包含小写字母
class Solution {
public:string reorganizeString(string s) {}
};

解析代码

力扣1054. 距离相等的条形码基本一致。

贪心策略:

  • 每次处理一批相同的字母,往 n 个空里面摆放。
  • 每次摆放的时候,隔一个格子摆放一个字母。
  • 先处理出现次数最多的那个字母,剩下的字母可任意。如果出现次数最多的那个数不超过(n + 1)/ 2,则有解,下一个数想相邻的话只能“填一圈”(不可能)。
class Solution {
public:string reorganizeString(string s) {int hash[26] = {0};char mostVal = s[0];int maxCount = 0;for(auto& e : s) // 统计每个数出现的频次{++hash[e - 'a'];if(maxCount < hash[e - 'a']){maxCount = hash[e - 'a'];mostVal = e;}}int n = s.size(), index = 0;if(maxCount > (n + 1) / 2)return "";string ret(n, ' ');for(int i = 0; i < maxCount; ++i) // 先处理出现次数最多的数{ret[index] = mostVal;index += 2;}hash[mostVal - 'a'] = 0;for(int i = 0; i < 26; ++i) // 处理剩下的数{for(int j = 0; j < hash[i]; ++j){if(index >= n)index = 1;ret[index] = i + 'a';index += 2;}}return ret;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/837274.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jetson Orin NX L4T35.4.1平台自启动时间优化调试记录1

1.前言 尝试优化Orin NX (p3767+p3768)与R35.4.1 BSP的启动时间; 从USB引导Orin设备; 最初,引导时间是55-57秒; 在内核端进行了一些优化之后,我们现在是38-40秒; 正试图在15秒内启动Orin设备,但是UEFI本身需要12秒才能完成 UEFI 优化: (1)https://github.com/NVI…

鸿蒙系统编译方式

鸿蒙系统编译 编译原理编译方式概述hb编译ohos-buildhb安装编译使用build脚本hpmhpm介绍编译举例说明综合应用举例虚拟机中编译docker中使用hpm编译编译原理 编译构建指导:https://docs.openharmony.cn/pages/v4.0/zh-cn/device-dev/subsystems/subsys-build-all.md,文档介绍…

java 对象赋值

在Java中&#xff0c;对象赋值给另一个对象通常是通过引用的方式来实现的。这意味着赋值操作后&#xff0c;两个对象引用同一个对象&#xff0c;它们指向相同的内存地址&#xff0c;修改其中一个对象的属性会影响到另一个对象。 class MyClass {private int intValue;private …

设计模式 六大原则之里氏替换原则

文章目录 概念替换逻辑行为不变 拆解小结 概念 子类对象能够替换程序中父类对象出现的任何地方&#xff0c;并且保证原来程序的逻辑行为不变及正确性不被破坏。 替换 替换的前提是面向对象语言所支持的多态特性&#xff0c;同一个行为具有多个不同表现形式或形态的能力。 逻…

Android adb shell关于CPU核的命令

Android adb shell关于CPU核的命令 先使用命令&#xff1a; adb shell 进入控制台。 然后&#xff0c;直接在$后面输入下面命令&#xff0c;针对CPU的命令。 cat /proc/cpuinfo | grep ^processor | wc -l 查看当前手机的CPU是几核的。 cat sys/devices/system/cpu/online …

Java面试八股之什么是Java反射

什么是Java反射 基本概念 反射是Java语言的一个重要特性&#xff0c;它允许我们在运行时分析类、接口、字段、方法等组件的信息&#xff0c;并能够动态地操作这些组件&#xff0c;包括创建对象、调用方法、访问和修改字段值等。简单来说&#xff0c;反射提供了在程序运行时对…

【kubeflow文档】kubeflow介绍与架构

1. kubeflow介绍 Kubeflow项目致力于使机器学习&#xff08;ML&#xff09;工作流在Kubernetes上的部署变得简单、可移植和可扩展。目标不是重新创建其他服务&#xff0c;而是提供一种直接的方法&#xff0c;将ML的开源系统部署到不同的基础设施中。无论在哪里运行Kubernetes&a…

Shell的运行原理和Linux的权限

Shell的运行原理 Linux严格意义上说是一个操作系统&#xff0c;我们称之为“核心&#xff08;kernel&#xff09;”&#xff0c;但我们一般用户不能直接使用kernel&#xff0c;而是通过kernel的“外壳程序”&#xff0c;也就是所谓的Shell&#xff0c;来与kernel沟通。 Shell…

迷茫时读书,焦虑时运动,独处时蓄力

这个观点非常富有哲理&#xff0c;它传达了在不同情绪状态下如何通过特定的活动来调整自己&#xff0c;以达到更好的心理状态和更健康的生活方式。 迷茫时读书&#xff1a;当我们感到迷茫、不知所措时&#xff0c;读书可以为我们提供新的视角、知识和启发。书籍是智慧的结晶&am…

C++ QT设计模式:责任链模式

基本概念 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为型设计模式&#xff0c;将请求沿着处理链传递&#xff0c;直到有一个对象能够处理为止。 实现的模块有&#xff1a; Handler&#xff08;处理者&#xff09;&#xff1a;定义一个处理…

Operations Research课程之非线性规划(梯度下降|牛顿法|Gurobi+Python)

目录 1.非线性规划介绍 2.梯度下降法(Gradient descent) 2.1 梯度和Hessians矩阵 2.2 梯度下降算法 2.3 算法举例 3. 牛顿法(Newton’s method) 3.1 适合单变量的牛顿法 3.2 适合多变量的牛顿法 3. 实例(GurobiPython) 3.1 Agricultural Pricing问题描述 3.2 Gurobi…

【论文复刻】堆叠柱状图+饼图

复刻了一下这篇论文里的fig2c&#xff1a;Impacts of COVID-19 and fiscal stimuli on global emissions and the Paris Agreement | Nature Climate Change 效果图&#xff1a; 主要步骤&#xff1a; 1. 数据准备&#xff1a;随机赋值 2. 图像绘制&#xff1a;绘制堆叠柱状…

【C++】可变参数模板简单介绍

前言 可变参数模板是C11中的新特性&#xff0c;它能够让我们创建可以接收可变参数的函数模板和类模板&#xff0c;相比C98/03&#xff0c;类模版和函数模版中只能含固定数量的模版参数&#xff0c;可变模版参数是一个巨大的改进&#xff0c;通过系统系统推演数据的类型&#xf…

Python笔记-Alchemy中改变表的模式(库schema)

现在是2024-01-10&#xff0c;发到互联网上应该是2024-05-13。查了下chatgpt&#xff0c;麻了&#xff0c;乱七八糟的。 最后还是靠stackoverflow解决的&#xff0c;目前&#xff0c;从解决问题的角度来看&#xff0c;这个还是牛逼点。 原文如下&#xff1a; python - How d…

Ansible常用变量【下】

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 前言 在上一篇文章《Ansible常用变量【上】》中&#xff0c;学习了Ansible常用变量的前半部分&#xff0c;放了个五一假&#x…

部署的脚本

文章目录 部署脚本2024心得优秀博客 部署脚本2024 心得 脚本部署&#xff0c;可以帮你大大的提高工作效率。脚本也被称为自动化办公。自己写的博客要么是太简单&#xff0c;要么是写的不好&#xff0c;总之是狗屎&#xff0c;所以不要自己写博客。多收集和整理一些不错的博客…

拼多多流量推广和点击哪个好?拼多多自然流量规则

流量推广是通过付费广告来增加商品的曝光量&#xff0c;而点击推广则是通过付费广告来增加商品的点击量。那么&#xff0c;对于商家来说&#xff0c;哪种推广方式更好呢? 一、拼多多流量推广和点击哪个好 流量推广&#xff1a;流量推广的优势在于能够快速提高商品的曝光量&a…

买货查窜货过程中的可能情况

控价除了要管控渠道中的低价、乱价链接外&#xff0c;还可能需要解决窜货问题&#xff0c;当窜货问题蔓延不及时解决时&#xff0c;渠道会越来越受影响&#xff0c;所以治理窜货也是控价过程中很重要的一步&#xff0c;窜货问题的治理多通过买货溯源来解决&#xff0c;买货要先…

Python多线程加速-休眠部分线程

总所周知Python由于GIL的问题&#xff0c;使用多线程时同一时刻只有一个线程在工作。故Python会在所有线程之间不断的切换&#xff0c;每切换到一个线程会执行一段字节码指令然后切换到另一个线程。如果开启了很多线程&#xff0c;且只有小部分线程在工作&#xff0c;如果不休眠…

Next.js与SSR:构建高性能服务器渲染应用

1. 创建项目 通过create-next-app脚手架创建一个新的Next.js项目&#xff1a; npx create-next-app my-app cd my-app2. 自动SSR 在Next.js中&#xff0c;每个.js或.jsx文件的组件都会被自动处理为SSR页面。例如&#xff0c;创建一个pages/index.js文件&#xff1a; // pag…