首页 > 试题广场 >

删除字符

[编程题]删除字符
  • 热度指数:1858 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
有一个长度为的字符串 ,你可以删除其中的 个字符,使剩余字符串的字典序最小,输出这个剩余字符串。

输入描述:
第一行输入一个整数,代表接下来有组测试数据。
对于每一组测试数据,第一行输入两个数代表字符串的长度和可以删除的字符数量。
接下来输入长度为字符串。




输出描述:
对于每一组数据,输出一个答案
示例1

输入

2
5 2
abcab
10 4
lkqijxsnny

输出

aab
ijsnny

用栈结构

def compute(s, n, m):
    stack = []
    remove = []
    for c in s:
        while len(stack) > 0 and c < stack[-1] and len(remove) < m:
            remove.append(stack.pop(-1))
        stack.append(c)
    return ''.join(stack)[:n-m]
编辑于 2021-04-29 16:09:50 回复(0)