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,这样暴力枚举所有的分界点,寻找最小的变化情况即可找到答案。