CSL 的字符串(思维+STL操作)
链接: https://ac.nowcoder.com/acm/contest/551/D 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言1048576K 64bit IO Format: %lld 题目描述 CSL 以前不会字符串算法,经过一年的训练,他还是不会……于是他打算向你求助。 给定一个字符串,只含有可打印字符,通过删除若干字符得到新字符串,新字符串必须满足两个条件: 原字符串中出现的字符,新字符串也必须包含。 新字符串中所有的字符均不相同。 新字符串的字典序是满足上面两个条件的最小的字符串。 输入描述: 仅一行,有一个只含有可打印字符的字符串 s。 |s|≤105|s|≤105 输出描述: 在一行输出字典序最小的新字符串。 示例1 输入 复制 bab 输出 复制 ab 示例2 输入 复制 baca 输出 复制 bac 备注: ASCII字符集包含 94 个可打印字符(0x21 - 0x7E),不包含空格。 思路:我们开一个记录数量的容器和标记数组,然后对string进行操作,注意string的str.end()-1是最后一个元素,也可以用str.rbegin()代替,如果我们当前的字符容器的最后一个有大于要插入的,并且后面还有这个字符,那我们就把这个字符给舍弃, 并且把这个字符的标记给更新