[CF1009B]Minimum Ternary String(思维)

题目链接

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

题意

给一个只含0、1、2串,只能做相邻的01交换或者相邻的12交换操作,问经过数次操作(可以是0次)能得到的最小字典序的串是什么。

题解

思维题
关键是把题意理解为:固定0、2的相对位置,往里随意放1,能得到的最小字典序。
显然,目标是把所有1放到0后1前好,故放到第一个2222前,若没有2则放到字符串最前。
关于存储串的形式,存到数组记1的数目即可,然后打印做处理即可。

代码

import java.util.Scanner;

public class Main {
	public static void main(String args[]) {
		Scanner in=new Scanner(System.in);
		String str=in.next();
		int cnt=0;
		for(int i=0;i<str.length();++i) {
			if(str.charAt(i)=='1') {
				++cnt;
			}
		}
		int i=0;
		for(;i<str.length();++i) {
			if(str.charAt(i)=='0') {
				System.out.print("0");
			}
			else if(str.charAt(i)=='2') {
				while(cnt-->0) {//
					System.out.print("1");
				}
				System.out.print("2");
			}
		}
		while(cnt-->0) {
			System.out.print("1");
		}
		in.close();
	}
}

posted on 2019-06-06 23:53  coding_gaga  阅读(103)  评论(0编辑  收藏  举报

导航