每日OJ题_牛客_重排字符串_贪心_C++_Java

news2024/11/24 6:35:21

目录

牛客_重排字符串_贪心

题目解析

C++代码

Java代码


牛客_重排字符串_贪心

重排字符串 (nowcoder.com)

描述:

        小红拿到了一个只由小写字母组成的字符串。她准备把这个字符串重排(只改变字母的顺序,不改变数量)
        重排后小红想让新字符串不包含任意两个相同的相邻字母。你能帮帮她吗?


题目解析

C++代码

#include <climits>
#include <iostream>
#include <vector>
using namespace std;

int main()
{
	int n = 0;
	string str;
	cin >> n >> str;
	vector<int> hash(26, 0);
	int sz = str.size();
	for (int i = 0; i < sz; ++i)
	{
		hash[str[i] - 'a']++;
	}
	int maxCnt = 0, maxIndex = 0;
	for (int i = 0; i < 26; ++i) // 先放第一大
	{
		if (hash[i] > maxCnt)
		{
			maxCnt = hash[i];
			maxIndex = i;
		}
	}
	if (maxCnt > (sz + 1) / 2)
		cout << "no";
	else
	{
		cout << "yes" << endl;
		vector<char> res(n);
		int i = 0;
		while (maxCnt--)
		{
			res[i] = (maxIndex + 'a');
			i += 2;
		}
        // cout << maxIndex << endl;
		for (int j = 0; j < 26; ++j)
		{
			if (j != maxIndex && hash[j] != 0) // 找到一个后往后找
			{
                while(hash[j]--)
                {
                    if(i >= n)
                        i = 1;
                    res[i] = j + 'a';
                    i += 2;
                }
			}
		}
		for (auto& e : res)
		{
			cout << e;
		}
        cout << endl;
	}
	return 0;
}

Java代码

import java.util.*;
public class Main
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        char[] s = in.next().toCharArray();

        char maxChar = '0';
        int maxCount = 0;
        int[] hash = new int[26];
        // 找出现次数最多的字符以及次数
        for(int i = 0; i < n; i++)
        {
            char ch = s[i];
            if(++hash[ch - 'a'] > maxCount)
            {
                maxChar = ch;
                maxCount = hash[ch - 'a'];
            }
        }

        // 判断是否能重排
        if(maxCount > (n + 1) / 2)
        {
            System.out.println("no");
        }
        else
        {
            System.out.println("yes");
            char[] ret = new char[n];
            int i = 0;
            // 重新排列
            // 1. 先处理出现次数最多的字符
            while(maxCount-- != 0)
            {
                ret[i] = maxChar;
                i += 2;
            }
            // 2. 处理剩下的字符
            for(int j = 0; j < 26; j++)
            {
                if(hash[j] != 0 && (char)(j + 'a') != maxChar)
                {
                    while(hash[j]-- != 0)
                    {
                        if(i >= n)
                        {
                            i = 1;
                        }
                        ret[i] = (char)(j + 'a');
                        i += 2;
                    }
                }
            }
            for(int j = 0; j < n; j++)
            {
                System.out.print(ret[j]);
            }
        }
    }
}

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

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

相关文章

滑动窗口--(中篇)

将X减到0的最小操作数 给你一个整数数组 nums 和一个整数 x 。每一次操作时&#xff0c;你应当移除数组 nums 最左边或最右边的元素&#xff0c;然后从 x 中减去该元素的值。请注意&#xff0c;需要 修改 数组以供接下来的操作使用。 如果可以将 x 恰好 减到 0 &#xff0c;返…

Tomcat 项目配置指南

在实际工作中&#xff0c;我们所维护的项目可能与我们平时做的项目不一样。其中一种情况就是需要自己配置Tomcat服务。 下面笔者为大家介绍Tomcat基础的配置以及可能遇到的问题。 文章目录 一、Tomcat 配置二、常见报错及解决方案参考 一、Tomcat 配置 1. 下载 Tomcat 从 Apa…

一款完全开源并免费的监测与分析系统,支持监测,预警,分析,报告,支持本地化部署(附源码)

前言 在当今这个信息爆炸的时代&#xff0c;企业和个人都需要时刻了解网络上的动态&#xff0c;以便及时了解自身品牌形象和社会舆论的变化。然而&#xff0c;现有的舆情监测工具往往价格昂贵&#xff0c;且cao作复杂&#xff0c;难以满足普通用户的需求。 在这种背景下&…

基于SSM实现的求职招聘系统 设计与实现

一、项目简介 求职招聘系统&#xff0c;基于SSM实现的求职招聘系统 二、技术实现 后台框架&#xff1a;Spring、SpringMVC、MyBatis UI界面&#xff1a;JSP、jQuery 、H-ui 数据库&#xff1a;MySQL 下载地址 基于SSM实现的求职招聘系统源码数据库资源-CSDN文库 三、系…

音频文件重采样 - python 实现

在处理音频文件的时候&#xff0c;经常会将原音频进行统一的重采样处理&#xff0c;设置为相同的采样率&#xff0c;本示例&#xff0c;就是将44100采样率的音频&#xff0c;重采样为16000. 安装对应的python 库&#xff1a;librosa 和 soundfile. pip install soundfile pip i…

Vue前端框架的基础配置

登录界面添加背景图 通过在登录界面的vue文件中&#xff0c;设置div标签的background-image属性&#xff0c;加载背景图 <style scoped> .myvue{width:100%;height: 750px; //添加背景图的地址background-image: url(../assets/oa.jpeg);background-size: cover;backgr…

Linux更改固定IP地址

1.VMware里更改虚拟网络 一: 二: 三:确定就好了 2.修改Linux系统的固定IP 一:进入此文件 效果如下: 执行以下命令: 此时IP已更改 3.远程连接 这个是前提!!! 更改网络编辑器后网络适配器可能会修改,我就是遇着这个,困住我了一会 一:可以以主机IP对应连接 连接成功 二:主机名连…

[OS] 2.Wait for signal (do_wait),task_struct

Wait for signal (do_wait) Linux 内核中 do_wait() 函数的实现&#xff0c;该函数是父进程等待子进程结束的系统调用的一部分。它通过在内核模式下等待信号&#xff0c;处理进程终止以及与父子进程相关的机制。让我们详细解读您提供的信息&#xff0c;涉及 do_wait() 的执行过…

微软推出针对个人的 “AI伴侣” Copilot 会根据用户的行为模式、习惯自动进化

微软推出了为每个人提供的“AI伴侣”Copilot&#xff0c;它不仅能够理解用户的需求&#xff0c;还能根据用户的日常习惯和偏好进行适应和进化。帮助处理各种任务和复杂的日常生活场景。 它能够根据用户的生活背景提供帮助和建议&#xff0c;保护用户的隐私和数据安全。Copilot…

Crypto虐狗记---”你“和小鱼(八)

前言&#xff1a;剧情八 提示&#xff1a; 下载&#xff1a; 只给了公钥 那么可以用RsaCtfTool去分离公钥---》 得到(e&#xff0c;n)&#xff1a; 如何安装参考&#xff1a; kail下安装RsaCtfTool - 九皋777 - 博客园 (cnblogs.com) 已知n&#xff0c;那么去得到p q 或者使…

智能制造领域的系统都有啥,MES、APS、PLC、SCADA等

提及制造业&#xff0c;大家都能想到工业4.0.那么与工业4.0紧密相连的B端系统都有哪些类型的&#xff0c;本文为大家详细解读下。 在智能制造领域&#xff0c;常见的系统包括MES&#xff08;制造执行系统&#xff09;、APS&#xff08;高级计划与排程系统&#xff09;、PLC&am…

Oracle 数据库安装和配置详解

Oracle 数据库安装和配置详解 Oracle 数据库是一款功能强大、广泛使用的企业级关系数据库管理系统 (RDBMS)&#xff0c;适用于处理大型数据库和复杂事务。本文将介绍如何在 Linux 和 Windows 环境下安装 Oracle 数据库&#xff0c;并对其进行基本配置&#xff0c;帮助开发者快…

maven指定模块快速打包idea插件Quick Maven Package

问题背景描述 在实际开发项目中&#xff0c;我们的maven项目结构可能不是单一maven项目结构&#xff0c;项目一般会用parent方式将各个项目进行规范&#xff1b; 随着组件的数量增加&#xff0c;就会引入一个问题&#xff1a;我们只想打包某一个修改后的组件A时就变得很不方便…

8位单片机与32位单片机

8位单片机与32位单片机 8位与32位指的是什么 单片机的8位或32位说的是什么呢&#xff1f;要搞懂这个问题&#xff0c;首先要搞明白8位或32位说的是单片机上的哪一个部件。 这是单片机的内部框图。单片机内部由这么多部件构成&#xff0c;并不单单是一个CPU&#xff0c;它内部…

NASA:GES DISC 的 ATMOS L1 光谱和运行日志 V3 (ATMOSL1)大气痕量分子光谱(ATMOS)1 级产品

目录 简介 变量 代码 引用 网址推荐 0代码在线构建地图应用 机器学习 ATMOS L1 Spectra and Runlogs V3 (ATMOSL1) at GES DISC 简介 这是第三版大气痕量分子光谱&#xff08;ATMOS&#xff09;1 级产品&#xff0c;包含 netCDF 格式的光谱和运行日志&#xff08;即 &…

Valve通过新的基础架构设计加强对Arch Linux的支持

Valve 宣布与 Arch Linux 发行版开展新的合作。 该公司透露&#xff0c;它将为 Arch Linux 的两项重要计划–构建服务基础设施和安全签名飞地–提供资金支持。这次合作将为 Arch Linux 解决一些老大难问题。 志愿开发人员利用业余时间开发项目。 然而&#xff0c;有些任务需要投…

查缺补漏----信道利用率与数据传输速率(计算题)

1.发送窗口与接收窗口 GBN的发送窗口为&#xff0c;若 大于 &#xff0c;则会造成接收方无法分辨新数据帧和旧数据帧。 这其实是所有重传协议必须满足的要求&#xff0c;即发送窗口为&#xff0c;例如这道题&#xff1a; 发送窗口为就是非常重要的条件&#xff0c;后面有讲解。…

认知杂谈100《穿越顺逆之镜》

内容摘要&#xff1a; 顺境和逆境都是成长的催化剂&#xff0c;但它们的作用并非绝对。顺境有助于积累经验&#xff0c;但可能导致自满和错误估计自身能力。逆境能激发智慧&#xff0c;但也可能使人陷入绝望&#xff0c;且失败的原因可能是不可控的外部因素。 成功可能让我们变…

【C语言】预处理指令详解

目录 一、预定义符号 二、#define 定义常量 三、#define 定义宏 &#xff08;1&#xff09;宏定义的使用 &#xff08;2&#xff09;带副作用的宏参数 &#xff08;3&#xff09;宏替换的规则 &#xff08;4&#xff09;宏与函数对比 &#xff08;5&#xff09;#和## …

Html批量转word工具2.1

2024年10月7日记录&#xff1a; 有客户反馈&#xff0c;2.0刚运行就提示转换完成 有问题就解决。正好国庆假期这几天有空&#xff0c;2.1版就出炉了。 2.1 更新记录&#xff1a; 修复了1个bug&#xff1a;刚运行就提示转换完成 下载地址&#xff1a;Html 转 word 批量处理工具…