首页 > 试题广场 >

删除多余的字符得到字典序最小的字符串

[编程题]删除多余的字符得到字典序最小的字符串
  • 热度指数:1776 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给一个全是小写字母的字符串str,删除多余字符,使得每种字符只保留一个,并且让最终结果字符串字典序最小。

输入描述:
输入包含一行字符串,代表str


输出描述:
输出一行,代表删除后的字符串。
示例1

输入

acbc

输出

abc
示例2

输入

dbcacbca

输出

dabc

备注:
时间复杂度,额外空间复杂度
头像 一只老风铃
发表于 2020-12-30 13:13:53
首先统计各个字符出现的数目 int count[26]标记数组表明结果中是否包含当前字符 bool visit[26]对于新来的一个字符,如果已经在结果中那么跳过如果不在结果中,那么需要判断结果末尾的元素是否需要弹出,条件为:①末尾元素之后还存在剩余②末尾元素的字典序比当前字符字 展开全文
头像 牛客703998597号
发表于 2022-02-17 20:37:50
单调栈: 创建访问标志map。 1.从后往前遍历字符串,遇到一个字符ch。 2.在map中查询是否存在ch。 1). 若不存在,ch入栈,入map。 2). 若存在: 若ch小于栈顶字符,将栈中包含的ch弹出,ch入栈 若ch大于栈顶字符,跳过. 循环1,2步。 void remove( 展开全文
头像 😊201803232157581
发表于 2021-08-31 11:56:44
public class Main { public static void main(String[] args) { char[] str = {'d','a','b','c','d'}; for(char a:str){ Syst 展开全文