牛妹拿到了一个只由小写字母组成的字符串 s ,接下来将字符串执行 k 次操作,每次操作都会把 s 中ASCII码最小的字母从 s 中删除,请返回 k 次操作之后的字符串 s 。
"caabeefa",2
"ceef"
"cbcb",1
"cc"
考点:排序
限制 1 秒 / 256MB | 核心代码模式(实现给定函数)
推荐方向:排序
本题切入点
统计每种字符出现次数,按 ASCII 从小到大依次删除,直到删满 k 个。
先用 O(n log n) 排序把无序变有序,后续处理往往就简单了。
思路框架(排序 通法 · 非本题专属)
实现要点:在 C++ 中用 std::sort,Python 用 sorted();注意自定义比较函数的严格弱序。
复杂度:时间 O(n log n) | 空间 O(log n) ~ O(n)
该范式的通法易错点
样例 1:输入 "caabeefa",2 → 输出 "ceef"
第1次操作, s 中ASCII值最小的字母是'a',删除所有的'a'得 s ="cbeef"
第2次操作, s 中ASCII值最小的字母是'b',删除所有的'b'得 s ="ceef"
因此最终 s ="ceef"
样例 2:输入 "cbcb",1 → 输出 "cc"
s 中ASCII码中最小的是b,删除b之后得到 s = "cc"。
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2024年秋招-贝壳找房-Java工程师-第一批笔试;2024年秋招-贝壳找房-C++工程师-第一批笔试;2024年秋招-贝壳找房-机器学习/数据挖掘工程师-第一批笔试。