交换次数
题目提交:https://www.dotcpp.com/oj/problem2294.html
参考及思路:https://blog.dotcpp.com/a/72922
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String s=sc.next();
sc.close();
char[][] c= {
{'B','A','T'},
{'B','T','A'},
{'A','B','T'},
{'A','T','B'},
{'T','A','B'},
{'T','B','A'},
};
int res=Integer.MAX_VALUE;
for (int i = 0; i < 6; i++) {
res=Math.min(res, f(s,c[i][0],c[i][1],c[i][2]));
}
System.out.println(res);
}
static int f(String s,char A,char B,char C) {
int a=0,b=0;
int Abc=0,Ab=0,Ba=0,Bc=0;
for (int i = 0; i < s.length(); i++) {
if(s.charAt(i)==A) a++;
if(s.charAt(i)==B) b++;
}
for (int i = 0; i < a; i++) {
if(s.charAt(i)!=A) Abc++;
if(s.charAt(i)==B) Ab++;
}
for (int i = a; i < a+b; i++) {
if(s.charAt(i)==A) Ba++;
if(s.charAt(i)==C) Bc++;
}
return Abc+Bc+Ba-Math.min(Ab, Ba);
}
}