思路:

大体可以看到:大的越后面越好,但是首先要保证如果他对于一个比他小的字符后面存在他。

主要操作就是利用栈,每次对栈里的元素询问是否比他大,且他的后面还存在。

#include<bits/stdc++.h>
using namespace std;
char s[100010];
int len,num[27];
bool vis[27];
stack<int>q;
vector<char>xs;
int main()
{
xs.clear();
while(!q.empty()) q.pop();
memset(num,0,sizeof(num));
scanf("%s",s);
len=strlen(s);
int x;
for(int i=0;i<len;i++)
{
x=s[i]-'a';
num[x]++;
}
memset(vis,false,sizeof(vis));
for(int i=0;i<len;i++)
{
x=s[i]-'a';
if(vis[x])
{
num[x]--;
continue;
}
if(q.empty())
{
q.push(x);
vis[x]=true;
num[x]--;
}
else
{
while(!q.empty()&&q.top()>x)
{
if(num[q.top()])
{
vis[q.top()]=false;
q.pop();
}
else
break;
}
q.push(x);
vis[x]=true;
num[x]--;
}
}
while(!q.empty())
{
xs.push_back(q.top()+'a');
q.pop();
}
int sz=xs.size();
for(int i=sz-1;i>=0;i--)
printf("%c",xs[i]);
return 0;
}

最新文章

  1. UML类图符号 各种关系说明以及举例
  2. Java c3p0连接池
  3. Leetcode 221. Maximal Square
  4. Altium Designer 15 --- Make 3D PCB Library with Rhinoceros
  5. JSBinding + SharpKit / JavaScript 加载流程
  6. cocos2dx实例开发之flappybird(入门版)
  7. Android(java)学习笔记141:各种边距设置
  8. Function Pointer in Delpni
  9. string s = HttpContext.Current.Server.MapPath(&quot;&quot;);
  10. php定界符 &lt;&lt;&lt; 的作用及使用注意事项
  11. jQuery --- 实现 checkbox 样式的单选框
  12. STM32高级定时器TIM1产生两路互补的PWM波(带死区)
  13. python学习之路网络编程篇(第五篇)-续篇
  14. bzoj3678 Katu Puzzle
  15. sqlalchemy外键的一些东西
  16. 解决安装YouCompleteMe与Vim版本不兼容问题
  17. AM335X启动(转)
  18. javassist实例
  19. PHP 冒泡排序(Bubble Sort)
  20. linux学习路线图

热门文章

  1. Java for LeetCode 125 Valid Palindrome
  2. Git查看并修改name和email
  3. netstat参数记录
  4. ZOJ 3329 One Person Game:期望dp【关于一个点成环——分离系数】
  5. html5--2.1新的布局元素(1)-header/footer
  6. 51nod1671【货物运输】
  7. 2018.3.1 RF module distance test part II-
  8. 国内镜像pip
  9. 集训Day13
  10. UVALive - 7831 :ACM Tax (主席树求树路径上中位数:LCA+主席树)