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


    题目来源

    美团校招笔试真题_小美的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算法源码

    1. const rl = require("readline").createInterface({ input: process.stdin });
    2. var iter = rl[Symbol.asyncIterator]();
    3. const readline = async () => (await iter.next()).value;
    4. void (async function () {
    5. const [n, k] = (await readline()).split(" ").map(Number);
    6. const s = await readline();
    7. let mt_count = 0;
    8. let not_mt_count = 0;
    9. for (let c of s) {
    10. if (c == "M" || c == "T") {
    11. mt_count++;
    12. } else {
    13. not_mt_count++;
    14. }
    15. }
    16. const ans = Math.min(k, not_mt_count) + mt_count;
    17. console.log(ans);
    18. })();

    Java算法源码

    1. import java.util.Scanner;
    2. public class Main {
    3. public static void main(String[] args) {
    4. Scanner sc = new Scanner(System.in);
    5. int n = sc.nextInt();
    6. int k = sc.nextInt();
    7. String s = sc.next();
    8. int mt_count = 0;
    9. int not_mt_count = 0;
    10. for (int i = 0; i < n; i++) {
    11. char c = s.charAt(i);
    12. if (c == 'M' || c == 'T') {
    13. mt_count++;
    14. } else {
    15. not_mt_count++;
    16. }
    17. }
    18. int ans = Math.min(k, not_mt_count) + mt_count;
    19. System.out.println(ans);
    20. }
    21. }

     

    Python算法源码

    1. if __name__ == "__main__":
    2. n, k = map(int, input().split())
    3. s = input()
    4. mt_count = 0
    5. not_mt_count = 0
    6. for c in s:
    7. if c == "M" or c == "T":
    8. mt_count += 1
    9. else:
    10. not_mt_count += 1
    11. ans = min(k, not_mt_count) + mt_count
    12. print(ans)

    C算法源码

    1. #include
    2. #include
    3. #define MAX_LEN 100001
    4. int main() {
    5. int n, k;
    6. scanf("%d %d", &n, &k);
    7. char s[MAX_LEN];
    8. scanf("%s", s);
    9. int mt_count = 0;
    10. int not_mt_count = 0;
    11. int i = 0;
    12. while (s[i] != '\0') {
    13. if (s[i] == 'M' || s[i] == 'T') {
    14. mt_count++;
    15. } else {
    16. not_mt_count++;
    17. }
    18. i++;
    19. }
    20. int ans = (int) fmin(k, not_mt_count) + mt_count;
    21. printf("%d\n", ans);
    22. return 0;
    23. }

     

    C++算法源码

    1. #include
    2. using namespace std;
    3. int main() {
    4. int n, k;
    5. cin >> n >> k;
    6. string s;
    7. cin >> s;
    8. int mt_count = 0;
    9. int not_mt_count = 0;
    10. for (const auto &c: s) {
    11. if (c == 'M' || c == 'T') {
    12. mt_count++;
    13. } else {
    14. not_mt_count++;
    15. }
    16. }
    17. int ans = min(k, not_mt_count) + mt_count;
    18. cout << ans << endl;
    19. return 0;
    20. }

  • 相关阅读:
    PDEBench-AI求解微分方程新基准
    一篇文章带你搞懂使用PID
    javascript复习之旅 2.3 instanceof
    Java框架(七)-- RESTful风格的应用(3)--浏览器的跨域访问
    白盒测试用例的设计(图文讲解,超详细)
    什么是FastAPI异步框架?(全面了解)
    瑞吉外卖学习笔记2
    Java 方法的使用
    docker安装postgresSQL和设置自定义数据目录
    ubuntu镜像里装东西
  • 原文地址:https://blog.csdn.net/qfc_128220/article/details/139888711