字节青训-字符串字符类型排序问题、小C点菜问题

目录

一、字符串字符类型排序问题

题目

样例

输入:

输出:

输入:

输出:

输入:

输出:

解题思路: 

问题理解

数据结构选择

算法步骤

最终代码:

运行结果:

​编辑 

二、小C点菜问题

问题描述

测试样例

解题思路: 

 

问题理解

数据结构选择

算法步骤

最终代码:

运行结果:

​编辑 

 

 


一、字符串字符类型排序问题

题目

给定一个字符串,其中仅包含,大小写字母,数字和问号。要求对该字符串内部字符排序,满足以下要求:

  1. 问号的占用的位置不变
  2. 数字占用的位置不变,数字之间由大到小排序
  3. 字母占用的位置不变,字母之间按字典序排序

具体请配合样例理解

样例

输入:

12A?zc

输出:

21A?cz

输入:

1Ad?z?t24

输出:

4Ad?t?z21

输入:

???123??zxy?

输出:

???321??xyz?

解题思路: 

问题理解

我们需要对给定的字符串进行排序,但有以下特殊要求:

  1. 问号的位置保持不变
  2. 数字的位置保持不变,但数字之间按从大到小排序
  3. 字母的位置保持不变,但字母之间按字典序排序

数据结构选择

  1. 问号的位置:我们可以通过遍历字符串,记录问号的位置。
  2. 数字和字母的排序:我们可以分别提取出数字和字母,进行排序,然后再放回原位置。

算法步骤

  1. 记录问号的位置:遍历字符串,记录问号的位置。
  2. 提取数字和字母:遍历字符串,提取出所有的数字和字母。
  3. 排序:对提取出的数字按从大到小排序,对提取出的字母按字典序排序。
  4. 重组字符串:根据记录的问号位置和排序后的数字、字母,重组字符串。

最终代码:

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;string solution(string inp) {// 记录问号的位置vector<int> questionMarks;for (int i = 0; i < inp.size(); ++i) {if (inp[i] == '?') {questionMarks.push_back(i);}}// 提取数字和字母vector<char> digits;vector<char> letters;for (char c : inp) {if (isdigit(c)) {digits.push_back(c);} else if (isalpha(c)) {letters.push_back(c);}}// 排序sort(digits.begin(), digits.end(), greater<char>());sort(letters.begin(), letters.end());// 重组字符串string result = inp;int digitIndex = 0;int letterIndex = 0;for (int i = 0; i < result.size(); ++i) {if (result[i] == '?') continue;if (isdigit(result[i])) {result[i] = digits[digitIndex++];} else if (isalpha(result[i])) {result[i] = letters[letterIndex++];}}return result;
}int main() {// Add your test cases herecout << (solution("12A?zc") == "21A?cz") << endl;cout << (solution("1Ad?z?t24") == "4Ad?t?z21") << endl;cout << (solution("???123??zxy?") == "???321??xyz?") << endl;return 0;
}

运行结果:

二、小C点菜问题

问题描述

小C来到了一家餐馆,准备点一些菜。

已知该餐馆有 nn 道菜,第 ii 道菜的售价为 wiwi​。

小C准备点一些价格相同的菜,但小C不会点单价超过 mm 的菜。

小C想知道,自己最多可以点多少道菜?


测试样例

样例1:

输入:m = 6, w = [2, 3, 3, 6, 6, 6, 9, 9, 23]
输出:3

样例2:

输入:m = 4, w = [1, 2, 4, 4, 4]

解题思路: 

问题理解

小C想要点一些价格相同的菜,并且这些菜的价格不能超过给定的上限 m。我们需要找出在满足这个条件下,小C最多可以点多少道菜。

数据结构选择

我们可以使用一个数组来存储每道菜的价格。为了快速统计每种价格的菜的数量,我们可以使用一个哈希表(在C++中可以使用 std::unordered_map)来记录每种价格的菜的数量。

算法步骤

  1. 遍历价格数组:统计每种价格的菜的数量,并将结果存储在哈希表中。
  2. 筛选价格:遍历哈希表,只考虑价格不超过 m 的菜。
  3. 找出最大数量:在筛选后的价格中,找出数量最多的那个,即为小C最多可以点的菜的数量。

最终代码:

#include <bits/stdc++.h>using namespace std;long solution(int m, const std::vector<int> w) {// 1. 统计每种价格的菜的数量std::unordered_map<int, int> priceCount;for (int price : w) {if (price <= m) {priceCount[price]++;}}// 2. 找出数量最多的菜int maxCount = 0;for (const auto& pair : priceCount) {if (pair.second > maxCount) {maxCount = pair.second;}}return maxCount;
}
int main() {std::cout << (solution(6, {2, 3, 3, 6, 6, 6, 9, 9, 23}) == 3) << std::endl;std::cout << (solution(4, {1, 2, 4, 4, 4}) == 3) << std::endl;std::cout << (solution(5, {5, 5, 5, 5, 6, 7, 8}) == 4) << std::endl;return 0;
}

运行结果:

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

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

相关文章

深入理解接口测试:实用指南与最佳实践5.0(二)

✨博客主页&#xff1a; https://blog.csdn.net/m0_63815035?typeblog &#x1f497;《博客内容》&#xff1a;.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 &#x1f4e2;博客专栏&#xff1a; https://blog.csdn.net/m0_63815035/cat…

CSS基础知识05(弹性盒子、布局详解,动画,3D转换,calc)

目录 0、弹性盒子、布局 0.1.弹性盒子的基本概念 0.2.弹性盒子的主轴和交叉轴 0.3.弹性盒子的属性 flex-direction row row-reverse column column-reverse flex-wrap nowrap wrap wrap-reverse flex-dirction和flex-wrap的组合简写模式 justify-content flex-s…

任务调度工具Spring Test

Spring Task 是Spring框架提供的任务调度工具&#xff0c;可以按照约定的时间自动执行某个代码逻辑。 作用&#xff1a;定时自动执行某段Java代码 应用场景&#xff1a; 信用卡每月还款提醒 银行贷款每月还款提醒 火车票售票系统处理未支付订单 入职纪念日为用户发送通知 一.…

嵌入式硬件杂谈(二)-芯片输入接入0.1uf电容的本质(退耦电容)

引言&#xff1a;对于嵌入式硬件这个庞大的知识体系而言&#xff0c;太多离散的知识点很容易疏漏&#xff0c;因此对于这些容易忘记甚至不明白的知识点做成一个梳理&#xff0c;供大家参考以及学习&#xff0c;本文主要针对芯片输入接入0.1uf电容的本质的知识点的进行学习。 目…

数据结构(单向链表——c语言实现)

链式存储的优缺点&#xff1a; 优点&#xff1a; 1、动态分配内存&#xff1a; 链式存储不需要在数据插入之前分配固定大小的数组或内存块&#xff0c;因此它更适合存储动态变化的数据 2、高效的插入和删除操作&#xff1a; 在链表中插入或删除元素只需要调整相邻节点的指…

基于Spring Boot的电子商务平台架构

2 相关技术 2.1 SpringBoot框架介绍 Spring Boot是一种不需要代码生成的一种框架&#xff0c;并且可以不需要配置任何的XML文件就可以&#xff0c;因为Spring Boot里面自带了很多接口&#xff0c;只需要配置不同的接口就会自动的应用并且识别需要的依赖&#xff0c;在配置方面非…

Level DB --- Block

class Block class Block是Level DB里面的重要数据结构&#xff0c;该数据结构用来承载已经存储到文件中的数据。已经被存储的数据当需要再次加载、应用&#xff08;例如搜索&#xff09;&#xff0c;这时首先要把数据加载、初始化到class Block里面。 数据的组织形式&#x…

记录大学Linux运维上机考试题目和流程

备注&#xff1a;今年的Linux操作系统考试已经全部结束&#xff0c;仅作为一个记录和留念 前提&#xff1a;配置环回网卡和环境和nat网卡 1、搭建dns服务器 2、Apache和http服务 3、搭建postfix邮件服务器实现邮件发送 4、搭建vsftpdFTP服务器实现文件上传 题目如下&…

前端面试笔试(四)

目录 一、数据结构算法等综合篇 1.线性探查法解决哈希冲突 2.请求分页系统中文件区和对换区 3.RADIUS认证协议&#xff0c;运行在哪个网络协议上 二、代码输出篇 1.res[1,2,100].map(parseInt) 如果我们想要输出为[1,2,100]&#xff0c;可以&#xff1a; 还可以换map里…

NVR录像机汇聚管理EasyNVR多品牌NVR管理工具视频汇聚技术在智慧安防监控中的应用与优势

随着信息技术的快速发展和数字化时代的到来&#xff0c;安防监控领域也在不断进行技术创新和突破。NVR管理平台EasyNVR作为视频汇聚技术的领先者&#xff0c;凭借其强大的视频处理、汇聚与融合能力&#xff0c;展现出了在安防监控领域巨大的应用潜力和价值。本文将详细介绍Easy…

C/C++运行库

文章目录 入口函数glibc入口函数_start__libc_start_mainMSVC入口函数堆初始化IO初始化 glibc C运行库glibc启动文件gcc补充C全局构造与析构 运行库对于多线程的改进线程局部存储 入口函数 使用C语言编写的一个hello world程序在用户看来的确非常简单&#xff0c;源代码仅需要…

学习使用LVGL,依赖官方网址

LVGL Basics — LVGL documentation LVGL基础知识 LVGL是一个开源的图形库&#xff0c;提供创建嵌入式GUI的一切 LVGL数据流 您为每个物理显示面板 创建一个显示器 (lv_display) &#xff0c;在其上创建屏幕小部件&#xff0c;将小部件添加到这些屏幕上。要处理触摸、鼠标、…

计算机网络HTTP——针对实习面试

目录 计算机网络HTTP什么是HTTP&#xff1f;HTTP和HTTPS有什么区别&#xff1f;分别说明HTTP/1.0、HTTP/2.0、HTTP/3.0请说明访问网页的全过程请说明HTTP常见的状态码Cookie和Session有什么区别&#xff1f;HTTP请求方式有哪些&#xff1f;请解释GET和POST的区别&#xff1f;HT…

大数据-226 离线数仓 - Flume 优化配置 自定义拦截器 拦截原理 了 拦截器实现 Java

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; Java篇开始了&#xff01; 目前开始更新 MyBatis&#xff0c;一起深入浅出&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff0…

无人机动力系统测试-实测数据与CFD模拟仿真数据关联对比分析

我们经常被问到这样的问题&#xff1a;“我们计划运行 CFD 仿真&#xff0c;我们还需要对电机和螺旋桨进行实验测试吗&#xff1f;我们可能有偏见&#xff0c;但我们的答案始终是肯定的&#xff0c;而且有充分的理由。我们自己执行了大量的 CFD 仿真&#xff0c;但我们承认&…

验证双随机矩阵(doubly stochastic matrix) 满足C(P)=C(P^T)

验证双随机矩阵(doubly stochastic matrix) 满足C( P P P)C(P T ^T T) 双随机矩阵&#xff1a; 在数学中&#xff0c;一个双随机矩阵&#xff08;doubly stochastic matrix&#xff09;是一个满足以下条件的矩阵&#xff1a; 非负矩阵&#xff1a;矩阵中的每个元素都是非负的…

Chrome 浏览器开启打印模式

打开开发者工具ctrl shift p输入print 找到 Emulate CSS print media type

Vite初始化Vue3+Typescrpt项目

初始化项目 安装 Vite 首先&#xff0c;确保你的 Node.js 版本 > 12.0.0。然后在命令行中运行以下命令来创建一个 Vite Vue 3 TypeScript 的项目模板&#xff1a; npm init vitelatest进入项目目录 创建完成后&#xff0c;进入项目目录&#xff1a; cd vue3-demo启动…

24 年第十届数维杯国际数模竞赛赛题浅析

本次万众瞩目的数维杯国际大学生数学建模赛题已正式出炉&#xff0c;无论是赛题难度还是认可度&#xff0c;该比赛都是数模届的独一档&#xff0c;含金量极高&#xff0c;可以用于综测加分、保研、简历添彩等各方面。考虑到大家解题实属不易&#xff0c;为了帮助大家取得好成绩…