美团校招机试 - 小美的MT(20240309-T3)

embedded/2024/10/19 2:17:14/

题目来源

美团校招笔试真题_小美的MT

题目描述

MT 是美团的缩写,因此小美很喜欢这两个字母。

现在小美拿到了一个仅由大写字母组成字符串,她可以最多操作 k 次,每次可以修改任意一个字符。

小美想知道,操作结束后最多共有多少个 'M' 和 'T' 字符?

输入描述

第一行输入两个正整数 n,k,代表字符串长度和操作次数。

第二行输入一个长度为 n 的、仅由大写字母组成的字符串。

  • 1 ≤ k ≤ n ≤ 10^5

输出描述

输出操作结束后最多共有多少个 'M' 和 'T' 字符。

用例

输入5 2
MTUAN
输出4
说明修改第三个和第五个字符,形成的字符串为 MTTAM,这样共有 4 个'M'和'T'。

题目解析

本题我们只需要统计出第二行输入的s串中:

M和T字符的数量:mt_count,以及非M、T字符的数量:not_mt_count。

由于我们最多可以操作k次,即最多将k个非M、T字符修改为M或T字符:

  • 若 not_mt_count >= k,则我们最多增加 k 个 M或T 字符
  • 若 not_mt_count < k,  则我们最多增加 not_mt_count 个 M或T 字符

即最终最多有 mt_count + min(k, not_mt_count) 个 M或T 字符。

JS算法源码

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;void (async function () {const [n, k] = (await readline()).split(" ").map(Number);const s = await readline();let mt_count = 0;let not_mt_count = 0;for (let c of s) {if (c == "M" || c == "T") {mt_count++;} else {not_mt_count++;}}const ans = Math.min(k, not_mt_count) + mt_count;console.log(ans);
})();

Java算法源码

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int k = sc.nextInt();String s = sc.next();int mt_count = 0;int not_mt_count = 0;for (int i = 0; i < n; i++) {char c = s.charAt(i);if (c == 'M' || c == 'T') {mt_count++;} else {not_mt_count++;}}int ans = Math.min(k, not_mt_count) + mt_count;System.out.println(ans);}
}

 

Python算法源码

if __name__ == "__main__":n, k = map(int, input().split())s = input()mt_count = 0not_mt_count = 0for c in s:if c == "M" or c == "T":mt_count += 1else:not_mt_count += 1ans = min(k, not_mt_count) + mt_countprint(ans)

C算法源码

#include <stdio.h>
#include <math.h>#define MAX_LEN 100001int main() {int n, k;scanf("%d %d", &n, &k);char s[MAX_LEN];scanf("%s", s);int mt_count = 0;int not_mt_count = 0;int i = 0;while (s[i] != '\0') {if (s[i] == 'M' || s[i] == 'T') {mt_count++;} else {not_mt_count++;}i++;}int ans = (int) fmin(k, not_mt_count) + mt_count;printf("%d\n", ans);return 0;
}

 

C++算法源码

#include <bits/stdc++.h>using namespace std;int main() {int n, k;cin >> n >> k;string s;cin >> s;int mt_count = 0;int not_mt_count = 0;for (const auto &c: s) {if (c == 'M' || c == 'T') {mt_count++;} else {not_mt_count++;}}int ans = min(k, not_mt_count) + mt_count;cout << ans << endl;return 0;
}


http://www.ppmy.cn/embedded/52529.html

相关文章

React的列表和Key

React的列表 如果我们要在React中把一个数组转化成为我们的列表要怎么转换呢&#xff1f; 你可以通过使用 {} 在 JSX 内构建一个元素集合。 //定义一个NumberList组件 function NumberList(props) {//使用组件需要传入一个number值const numbers props.numbers;//使用 map(…

Docker配置阿里云加速器(2续)

默认情况下镜像是从docker hub下载&#xff0c;由于docker hub服务器在国外&#xff0c;由于网络原因镜像下载速度较慢&#xff0c;一般会配置镜像加速进行下载 国内镜像加速器有阿里云、网易云、中科大等&#xff0c;本章配置阿里云镜像加速器&#xff0c;速度较快 镜像加速源…

C#批量重命名文件

var outTaskFilePath Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "files", "552432747954181G54"); #region 重命名 foreach (var localPath in Directory.GetFiles(outTaskFilePath)) { var fileName Path.Get…

目标检测—Fast RCNN

介绍Fast R-CNN之前先简单回顾一下R-CNN和SPP-net R-CNN&#xff08;Regions with CNN&#xff09; affine image wraping 解析 Bounding Box Regression&#xff08;边界框回归&#xff09; 如何回归&#xff1f; 问题1&#xff1a;为什么要使用相对坐标差&#xff1f; …

第一课:SSH协议、SSHD守护进程、Openssh软件包

第一节课 6月12日 ssh协议 关键问题 一、ssh、sshd、openssh的概念和区别&#xff1f; 二、ssh是基于什么架构&#xff1f;B/S还是C/S&#xff1f; 三、用户远程连接服务器经历哪些过程&#xff1f; 四、如何查看openssh软件包是否安装&#xff1f; 五、rpm和yum的区别&#xf…

多商户零售外卖超市外卖商品系统源码

构建你的数字化零售王国 一、引言&#xff1a;数字化零售的崛起 在数字化浪潮的推动下&#xff0c;零售业务正经历着前所未有的变革。多商户零售外卖超市商品系统源码应运而生&#xff0c;为商户们提供了一个全新的数字化零售解决方案。通过该系统源码&#xff0c;商户们可以…

【Docker】Docker镜像

1、简介 1.1UnionFS&#xff08;联合文件系统&#xff09; UnionFS&#xff08;联合文件系统&#xff09;&#xff1a;Union文件系统&#xff08;UnionFS&#xff09;是一种分层、轻量级并且高性能的文件系统&#xff0c;它支持对文件系统的修改作为一次提交来一层层的叠加&a…

IDEA、PyCharm等基于IntelliJ平台的IDE汉化方式

PyCharm 或者 IDEA 等编辑器是比较常用的&#xff0c;默认是英文界面&#xff0c;有些同学用着不方便&#xff0c;想要汉化版本的&#xff0c;但官方没有这个设置项&#xff0c;不过可以通过插件的方式进行设置。 方式1&#xff1a;插件安装 1、打开设置 File->Settings&a…