zoukankan      html  css  js  c++  java
  • cf B. Minimum Ternary String

    http://codeforces.com/contest/1009/problem/B

        题目大意就是给你一个仅由'0','1','2'组成的字符串,然后有2种变换方式,一种是0和1交换位置,另一种是1和2交换位置。问经过任意次的变化得到的字典序最小的字符串。

        题解:因为1可以和0交换位置,1又可以和2交换位置,所以1可以变换到任意的位置,而0和2不能交换,就相当于是0和2的相对位置是不能改变的,比如说有个字符串012010,不管这2个1换到哪里,第一个0永远在第一个2前面,第二个和第三个0永远在第一个2的后面。为了令字典序最小就要使0尽可能放最前面,1尽可能放中间,2尽可能放最后面,那就从把字符串从头到尾扫一遍,遇到1跳过,遇到0输出,遇到第一个2就把字符串全部的1输出,然后此时第一个2后面就没有1了,只有0和2存在了,然后因为0,2不能交换,所以直接输出

    #include<bits/stdc++.h>
    using namespace std;
    char s[100005];
    int main()
    {
        int num1=0,flag=0;
        cin>>s;
        for(int i=0;s[i]!='';i++)
        {
            if(s[i]=='1') num1++;
        }
        for(int i=0;s[i]!='';i++)
        {
            if(s[i]=='1') continue;
            if(s[i]=='0') cout<<0;
            if(s[i]=='2'&&!flag)
            {
                flag=1;
                while(num1--) cout<<1;
                cout<<2;
    
            }
            else
                if(s[i]=='2'&&flag)
                    cout<<2;
    
        }
        if(!flag)
            while(num1--)
                cout<<1;
        cout<<endl;
        return 0;
    
    }
    


  • 相关阅读:
    查询语句
    索引的增删改成查
    pymysql模块
    mysql备份
    单表查询语法
    单表查询
    mysql增删改差
    Leetcode--1. Two Sum(easy)
    Leetcod--20. Valid Parentheses(极简洁的括号匹配)
    Leetcode-448. Find All Numbers Disappeared in an Array(solve without extra space easy)
  • 原文地址:https://www.cnblogs.com/eason9906/p/11755092.html
Copyright © 2011-2022 走看看