zoukankan      html  css  js  c++  java
  • Minimal string 栈 贪心

    time limit per test
    1 second
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    Petya recieved a gift of a string s with length up to 105 characters for his birthday. He took two more empty strings t and u and decided to play a game. This game has two possible moves:

    • Extract the first character of s and append t with this character.
    • Extract the last character of t and append u with this character.

    Petya wants to get strings s and t empty and string u lexicographically minimal.

    You should write a program that will help Petya win the game.

    Input

    First line contains non-empty string s (1 ≤ |s| ≤ 105), consisting of lowercase English letters.

    Output

    Print resulting string u.

    Examples
    input
    cab
    output
    abc
    input
    acdb
    output
    abdc

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #include<sstream>
    #include<algorithm>
    #include<queue>
    #include<deque>
    #include<iomanip>
    #include<vector>
    #include<cmath>
    #include<map>
    #include<stack>
    #include<set>
    #include<fstream>
    #include<memory>
    #include<list>
    #include<string>
    using namespace std;
    typedef long long LL;
    typedef unsigned long long ULL;
    #define MAXN 100009
    #define N 40
    #define MOD 10000007
    #define INF 1000000009
    const double eps = 1e-9;
    const double PI = acos(-1.0);
    /*
    从前往后遍历
    要让字典序的顺序尽量小,那么如果该字符后面有字典序比它小的,应当一直压栈直到栈顶元素优先级更高为止。(保证字典序小的优先!)
    */ char s[MAXN],best[MAXN]; stack<char> S; int main() { scanf("%s", s); int l = strlen(s); best[l] = 'z'; int p = 0; for (int i = l - 1; i >= 0; i--) best[i] = min(s[i], best[i + 1]); while (!S.empty() || p < l) { if (!S.empty() && S.top() <= best[p]) putchar(S.top()), S.pop(); else S.push(s[p++]); } printf(" "); return 0; }
  • 相关阅读:
    Git学习手记(一)
    微信开发手记(二)
    mysql命令行打开中文乱码
    在linux上centos6安装pdo_mysql扩展
    在linux上安装php5.6版本提示GD2版本要高于2.1.0解决
    在linux上安装apache是出现error1错误
    在linux上搭建amp环境安装jpeg时出现libtool command not found,error127解决
    在linux中搭建amp环境(apache2.4.7+mysql5.5.23+php5.6.19)
    mysql忘记root密码解决办法
    移动端网页设计经验与心得
  • 原文地址:https://www.cnblogs.com/joeylee97/p/7274106.html
Copyright © 2011-2022 走看看