题目描述
我们现在有四个槽,每个槽放一个球,颜色可能是红色(R)、黄色(Y)、绿色(G)或蓝色(B)。例如,可能的情况为RGGB(槽1为红色,槽2、3为绿色,槽4为蓝色),作为玩家,你需要试图猜出颜色的组合。比如,你可能猜YRGB。要是你猜对了某个槽的颜色,则算一次“猜中”。要是只是猜对了颜色但槽位猜错了,则算一次“伪猜中”。注意,“猜中”不能算入“伪猜中”。
给定两个string A和guess。分别表示颜色组合,和一个猜测。请返回一个int数组,第一个元素为猜中的次数,第二个元素为伪猜中的次数。
测试样例:
"RGBY","GGRR"
返回:[1,1]
思路:用falsity表示猜中颜色槽位猜错,reality表示两个都猜对。
遍历一遍,直接求得reality的结果,然后算出A与guess里面每种颜色的个数,
falsity为各个颜色猜中的结果之和,并且要减去reality(因为包含了正确的情况)
import java.util.*;
public class Result {
public int[] calcResult(String A, String guess) {
// write code here
int falsity = 0;
int reality = 0;
int aR=0,aY=0,aG=0,aB=0,gR=0,gY=0,gG=0,gB=0;
for(int i =0;i<A.length();i++){
char a=A.charAt(i);
char g=guess.charAt(i);
if(a==g)reality++;
if(a=='R'){
aR++;
}else if (a=='Y') {
aY++;
}else if (a=='G') {
aG++;
}else {
aB++;
}
if(g=='R'){
gR++;
}else if (g=='Y') {
gY++;
}else if (g=='G') {
gG++;
}else {
gB++;
}
}//for
if(aB>gB){
falsity+=gB;
}else{
falsity+=aB;
}
if(aR>gR){
falsity+=gR;
}else{
falsity+=aR;
}
if(aY>gY){
falsity+=gY;
}else{
falsity+=aY;
}
if(aG>gG){
falsity+=gG;
}else{
falsity+=aG;
}
falsity-=reality;
int array[]=new int[2];
array[0]=reality;
array[1]=falsity;
return array;
}
}