荷兰国旗问题
描述
荷兰国旗有三横条块构成,自上到下的三条块颜色依次为红、白、蓝。现有若干由红、白、蓝三种颜色的条块序列,要将它们重新排列使所有相同颜色的条块在一起。本问题要求将所有红色的条块放最左边、所有白色的条块放中间、所有蓝色的条块放最右边。
- 输入
- 第1行是一个正整数n(n<100),表示有n组测试数据。接下来有n行,每行有若干个由R,W,B三种字符构成的字符串序列,其中R,W和B分别表示红、白、蓝三种颜色的条块,每行最多有1000个字符。
- 输出
- 对输入中每行上由R,W,B三种字符构成的字符串序列,将它们重新排列使所有相同颜色的条块在一起,满足前述要求。
- 样例输入
-
3 BBRRWBWRRR RRRWWRWRB RBRW
- 样例输出
-
RRRRRWWBBB RRRRRWWWB RRWB
1 import java.util.Arrays; 2 import java.util.Scanner; 3 4 public class Main { 5 public static void main(String[] args) { 6 Scanner scanner=new Scanner(System.in); 7 int T; 8 char sChar[]; 9 int i; 10 int R; 11 int W; 12 int B; 13 14 T=scanner.nextInt(); 15 while(true){ 16 if(T==0) 17 break; 18 T--; 19 20 sChar=scanner.next().toCharArray(); 21 22 R=0; 23 W=0; 24 B=0; 25 for(i=0;i<sChar.length;i++){ 26 if(sChar[i]=='R') 27 R++; 28 else if(sChar[i]=='W') 29 W++; 30 else 31 B++; 32 } 33 34 for(i=0;i<R;i++) 35 System.out.print("R"); 36 37 for(i=0;i<W;i++) 38 System.out.print("W"); 39 40 for(i=0;i<B;i++) 41 System.out.print("B"); 42 43 System.out.println(); 44 } 45 } 46 }