有序01字符串

来源:互联网 发布:社交软件英文怎么说 编辑:程序博客网 时间:2024/06/07 05:14

1.题目描述
传送门
2.code(java1.7版本)

import java.util.*;public class Main{    public static void main(String[]args){        Scanner sc=new Scanner(System.in);        int N=0;        N=sc.nextInt();        while((N--)>0){            String ans=sc.next();            int len=ans.length();            int count0=0;            for(int i=0;i<len;i++){                if(ans.charAt(i)=='0'){                    count0++;                }            }            int re=0;            int rnum0=count0;            int lnum1=0;            re=rnum0+lnum1;            for(int i=0;i<len;i++){                if(ans.charAt(i)=='0')rnum0--;                else lnum1++;                re=Math.min(re,rnum0+lnum1);            }            System.out.println(re);        }    }}

3.解题思路
考虑到最后的字符串处于所有的0在所有的1前面,则对于原字符串的操作一定是在某一个点为分界处,将分界处前面所有的1变为0,分界处后面的所有0变为1,这样暴力枚举所有的分界点,寻找最小的变化情况即可找到答案。

原创粉丝点击