题干:

CSL 以前不会字符串算法,经过一年的训练,他还是不会……于是他打算向你求助。

给定一个字符串,只含有可打印字符,通过删除若干字符得到新字符串,新字符串必须满足两个条件:

  • 原字符串中出现的字符,新字符串也必须包含。
  • 新字符串中所有的字符均不相同。
  • 新字符串的字典序是满足上面两个条件的最小的字符串。

输入描述:

仅一行,有一个只含有可打印字符的字符串 s。

|s|≤105|s|≤105

输出描述:

在一行输出字典序最小的新字符串。

示例1

输入

复制

bab

输出

复制

ab

示例2

输入

复制

baca

输出

复制

bac

备注:

ASCII字符集包含 94 个可打印字符(0x21 - 0x7E),不包含空格。

解题报告:

这题是类似单调栈的思想,只不过弹出的时候要判断一下是否后面还有改数字。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;
const int MAX = 1e5 + 5;
string s;
bool vis[MAX];
int bk[555],tot;
stack<char > sk;
int main() {cin>>s;int len = s.size();s = ' ' + s;for(int i = 1; i<=len; i++) {bk[s[i]]++;}string ans;int cur = 1,pos = 1;for(int i = 1; i<=len; i++) {char tar = s[i];bk[tar]--;if(vis[tar]) continue;while( sk.size() && bk[sk.top()] && tar < sk.top()) {vis[sk.top()] = 0;sk.pop();ans.pop_back();}ans += tar;sk.push(tar);vis[tar] = 1;}cout << ans << endl;return 0 ;
}
//bcdddbca

【牛客 - 551D】CSL 的字符串(单调栈,思维)相关推荐

  1. 牛客 - 牛牛的滑动窗口(单调栈+思维+差分)

    题目链接:点击查看 题目分析:给出 nnn 个数,定义滑动窗口的贡献是其中最大值与最小值的乘积,现在问对于长度分别为 [1,n][1,n][1,n] 的滑动窗口,贡献之和分别是多少 题目分析:考虑暴力 ...

  2. 牛客 奇怪的排序问题(单调栈/遍历)

    文章目录 1. 题目 2. 解题 1. 题目 链接:https://ac.nowcoder.com/acm/contest/10166/B 来源:牛客网 操场上有n个人排成一队,这n个人身高互不相同, ...

  3. 2021牛客多校2 - Stack(单调栈+拓扑)

    题目链接:点击查看 题目大意:给出 b[i]b[i]b[i] 数组的求解过程: Stk is an empty stack for i = 1 to n :while ( Stk is not emp ...

  4. 牛客小白月赛13-H(单调栈+树状数组)

    题目链接:https://ac.nowcoder.com/acm/contest/549/H 题意:给一个柱状图,包括每个矩阵的宽度和高度,求能组成的最大矩阵的面积. 思路:显然最大矩阵的高一定为n个 ...

  5. 牛客 小米校招 计算题 单调栈 接雨水

    给定n个非负整数表示每个宽度为1的柱子的高度题,计算按此排列的柱子,下雨之后能接多少雨水. 经典的题目 leetcode 42 接雨水 单调栈 保持栈内单调递减 每次把一个矮的出栈都能够加上一大块面积 ...

  6. 【牛客】CSL 的字符串 (stack map)

    https://ac.nowcoder.com/acm/contest/551/D 这个题怎么说,data用来存储这个字母在字符串中最后一次出现的位置,vis则用来记录该字母是否在栈中. 当栈为空的时 ...

  7. 牛客题霸 [将字符串转化为整数] C++题解/答案

    牛客题霸 [将字符串转化为整数] C++题解/答案 题目描述 实现函数 atoi .函数的功能为将字符串转化为整数 提示:仔细思考所有可能的输入情况.这个问题没有给出输入的限制,你需要自己考虑所有可能 ...

  8. 牛客题霸 [找到字符串的最长无重复字符子串] C++题解/答案

    牛客题霸 [找到字符串的最长无重复字符子串] C++题解/答案 题目描述 给定一个数组arr,返回arr的最长无的重复子串的长度(无重复指的是所有数字都不相同). 题解: i和j两个指针分别指不重复子 ...

  9. 牛客题霸 [反转字符串] C++题解/答案

    牛客题霸 [反转字符串] C++题解/答案 题目描述 写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串.(字符串长度不超过1000) 题解: 有reverse现成的翻转函数,直接套进去就可 ...

  10. 牛客题霸 [旋转字符串]C++题解/答案

    牛客题霸 [旋转字符串]C++题解/答案 题目描述 字符串旋转: 给定两字符串A和B,如果能将A从中间某个位置分割为左右两部分字符串(都不为空串),并将左边的字符串移动到右边字符串后面组成新的字符串可 ...

最新文章

  1. SAP提请法院向甲骨文支付不超4亿美元赔偿金
  2. AI芯片评测如何与时俱进?地平线提出全新MAPS评测方法,帮助用户理解AI芯片性能...
  3. python一:hello world
  4. Visual Basic的未来之路
  5. 计算机文化教程实验基础知识,《计算机文化基础上机实验教程》孙家启、黄晓梅、刘奎 著_孔网...
  6. MPI Maelstrom——Dijkstra
  7. 初探EntityFramework——空Code First模型
  8. Seata多微服务互相调用_全局分布式事物使用案例_Order-Module order微服务的配置搭建---微服务升级_SpringCloud Alibaba工作笔记0060
  9. ICML'21 GNN的最新研究热点
  10. 在linux系统下安装oracle前的准备工作(配置oracle环境变量)
  11. 实现安卓中TextView,EditText中数字的数码管字体显示
  12. 原创 subsonic指南中文 翻译
  13. 用JSDoc生成js文档
  14. C# 多文件压缩与解压
  15. 中外十大武侠片排行榜
  16. Android 实现扫一扫功能
  17. 多益网络校招 —— web前端一面
  18. 计算机绘图实训体会,CAD实习心得体会
  19. sql server根据日期筛选出工作日的数据
  20. 华为无线学习笔记--WLAN(无线)实验

热门文章

  1. 2017百度之星资格赛 1003 度度熊与邪恶大魔王
  2. 华为云上可订阅F5_F5亮相华为云计算大会 解读云应用交付
  3. eclipse xml文件报错_Maven教程6: Maven与Eclipse整合
  4. 系统云服务器,系统云服务器
  5. pjsua帮助手册(中文)
  6. ISDN与PSTN的区别是什么?
  7. C语言依次显示图片,c语言能显示图片吗
  8. python归一化 增大差异_Python逻辑回归模型原理及实际案例应用
  9. python画饼图程序_python使用matplotlib画饼状图
  10. android 安装第三方app,Android识别预装的第三方App方法实例