我们要通过删除尽可能少的字符,使 26 个字母的出现次数满足
cnt[a]≤cnt[b]≤⋯≤cnt[z]这天,有人在小红书上发布了一道每日一题之编程题,如下:
给定一个长度为 n 的字符串 s ,该字符串仅由小写字母构成。 你需要删除尽可能少的字符,使得所得的字符串中,字符 ‘a’ 至 ‘z’ 的出现次数满足 ‘a’ 的次数≦‘b’的次数 ≦…≦‘z’ 的次数.
显然,这个问题的答案非常多,因为可能有不同的删除方案。评论区已经有很多人给出了自己的解答。
为了展现你强大的编程实力,你决定写一个程序,在解决这个问题的同时,找到的字符串是全部答案中字典序最小的。直接输出这个字符串即可。
[名词解释]
不同长度字符串的字典序比较:从字符串的第一个字符开始逐个比较,直至发现第一个不同的位置,比较这个位置字符的字母表顺序,字母序更小的字符串字典序也更小;如果比较到其中一个字符串的结尾时依旧全部相同,则较短的字符串字典序更小。
第一行输入一个整数 n(1≤n≤2•105) ,表示字符串长度。
第二行输入一个长度为 n ,仅由小写字母构成的字符串 s 。除此之外,保证字符串至少包含一个 ‘z’ 。
输出一个字符串,表示满足上述条件且字典序最小的结果字符串。
输入
4
xyxz
输出
xyz
说明
样例解释1
在这个样例中,删除第三个字符 'x ’,得到" xyz ",此时各字母出现次数均为 1 ,满足非严格递增,且为字典序最小。
样例2输入
3
azz
样例2输出
zz