[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 阅读(104) 评论(0) 编辑 收藏 举报
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步