在幼兒園有n個(gè)小朋友排列為一個(gè)隊(duì)伍,從左到右一個(gè)挨著一個(gè)編號(hào)為(0~n-1)。其中有一些是男生,有一些是女生,男生用'B'表示,女生用'G'表示。小朋友們都很頑皮,當(dāng)一個(gè)男生挨著的是女生的時(shí)候就會(huì)發(fā)生矛盾。作為幼兒園的老師,你需要讓男生挨著女生或者女生挨著男生的情況最少。你只能在原隊(duì)形上進(jìn)行調(diào)整,每次調(diào)整只能讓相鄰的兩個(gè)小朋友交換位置,現(xiàn)在需要盡快完成隊(duì)伍調(diào)整,你需要計(jì)算出最少需要調(diào)整多少次可以讓上述情況最少。例如:
GGBBG -> GGBGB -> GGGBB
這樣就使之前的兩處男女相鄰變?yōu)橐惶幭噜彛枰{(diào)整隊(duì)形2次
輸入描述:
輸入數(shù)據(jù)包括一個(gè)長(zhǎng)度為n且只包含G和B的字符串.n不超過(guò)50.
輸出描述:
輸出一個(gè)整數(shù),表示最少需要的調(diào)整隊(duì)伍的次數(shù)
輸入例子1:
GGBBG
輸出例子1:
2
代碼
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()) {
String s = in.next();
System.out.println(solve(s));
}
}
private static int solve(String s) {
int toleft = 0;
int toright = s.length()-1;
int leftcost = 0;
int rightcost = 0;
for(int i=0;i<s.length();i++) {
if(s.charAt(i) == 'B') {
leftcost += i-toleft;
toleft++;
rightcost += toright - i;
toright--;
}
}
return Math.min(leftcost, rightcost);
}
}