0
点赞
收藏
分享

微信扫一扫

Java习题练习:1266 RGB


1266 RGB

  • ​​🍋问题描述​​
  • ​​🍋解题思路​​
  • ​​🍋解题代码​​

🍋问题描述

Java习题练习:1266 RGB_变量名

🍋解题思路

先遍历出有几个R,几个G,几个B。
划分出三个部分。
之后在各个部分,找出调换位置的各种数目。
有互换一次就可以调回去的。
也有调两次才能调回去的。

需要注意的是:循环输入,要用while(in.hasNext()),用while(true)是错误的,会导致runtime error

🍋解题代码

import java.util.Scanner;

public class Main {


public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);//请不要照抄我的代码
while(in.hasNext()) {
String st=in.next();//稍微改改变量名字,换换程序顺序之类的
int r=0,g=0,b=0;
for(int i=0;i<st.length();i++) {
if(st.charAt(i)=='R')
r++;
if(st.charAt(i)=='G')
g++;
if(st.charAt(i)=='B')
b++;
}
int ans=0;
int rg=0,gr=0,rb=0,br=0,gb=0,bg=0,rr=0;
for(int i=0;i<r;i++) {
if(st.charAt(i)=='G') {
rg++;
}
if(st.charAt(i)=='R') {
rr++;
}
if(st.charAt(i)=='B') {
rb++;
}
}
for(int i=r;i<r+g;i++) {
if(st.charAt(i)=='R') {
gr++;
}
if(st.charAt(i)=='B') {
gb++;
}
}
for(int i=r+g;i<r+g+b;i++) {
if(st.charAt(i)=='R') {
br++;
}
if(st.charAt(i)=='G') {
bg++;
}
}
//r中有g,g中有r
if(rg>gr) {
ans=ans+gr;
r-=gr;
}

else {
ans=ans+rg;
r-=rg;
}

//g中有b,b中有g
if(gb>bg)
ans=ans+bg;
else
ans=ans+gb;
//r中有b,b中有r
if(rb>br) {
ans+=br;
r-=br;
}

else {
ans+=rb;
r-=rb;
}

ans+=(r-rr)*2;
System.out.println(ans);

}
}

}


举报

相关推荐

0 条评论