zoukankan      html  css  js  c++  java
  • Educational Codeforces Round 19 C

    Description

    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 lexigraphically 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
    题意:第一个字符串的首字母放在第二个字符串的中,第二个字符串的结尾再输出,求能够得到字典序最小的字符串
    解法:模拟,如果第一个字符串的首字母为最小,则直接输出,否则压入栈内,处理完毕之后再输出
     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int num[30];
     4 string s;
     5 int check(char c)
     6 {
     7     for(int i='a';i<c;i++)
     8     {
     9         if(num[i])
    10         {
    11             return 0;
    12         }
    13     }
    14     return 1;
    15 }
    16 stack<char>q;
    17 int main() {
    18     ios::sync_with_stdio(false);
    19     cin.tie(0);
    20     cin>>s;
    21     for(int i=0;i<s.size();i++)
    22     {
    23         num[s[i]]++;
    24     }
    25     int cnt=0;
    26     while(cnt<s.size())
    27     {
    28         if(q.empty())
    29         {
    30             q.push(s[cnt]);
    31             num[s[cnt]]--;
    32             cnt++;
    33         }
    34         else if(check(q.top()))
    35         {
    36             cout<<q.top();
    37             q.pop();
    38         }
    39         else
    40         {
    41             q.push(s[cnt]);
    42             num[s[cnt]]--;
    43             cnt++;
    44         }
    45     }
    46     while(!q.empty())
    47     {
    48         cout<<q.top();
    49         q.pop();
    50     }
    51     return 0;
    52 }
  • 相关阅读:
    C++类构造函数初始化列表(转)
    Linux可重入函数和线程安全的区别与联系(转)
    Splinter自动登录
    VBA添加下拉菜单
    批处理自动备份并生成日志文件
    VBA 格式化excel数据表 (数据分列)
    Python 调用outlook发送邮件(转 )
    Node.js 文件操作
    Node.js express模块 http服务
    将ejs模板文件的后缀换成html
  • 原文地址:https://www.cnblogs.com/yinghualuowu/p/6721488.html
Copyright © 2011-2022 走看看