咱们如今有四个槽,每一个槽放一个球,颜色多是红色(R)、黄色(Y)、绿色(G)或蓝色(B)。例如,可能的状况为RGGB(槽1为红色,槽二、3为绿色,槽4为蓝色),做为玩家,你须要试图猜出颜色的组合。好比,你可能猜YRGB。要是你猜对了某个槽的颜色,则算一次“猜中”。要是只是猜对了颜色但槽位猜错了,则算一次“伪猜中”。注意,“猜中”不能算入“伪猜中”。java
给定两个string A和guess。分别表示颜色组合,和一个猜想。请返回一个int数组,第一个元素为猜中的次数,第二个元素为伪猜中的次数。数组
测试样例:测试
"RGBY","GGRR"
返回:[1,1]
从题目中能够获取隐含信息:
“猜中” 属于 “伪猜中”,可是反过来不成立。
全部须要先统计猜中,
而后再统计 伪猜中个数= 可能的伪猜中个数 - 猜中个数
所以代码就比较容易写出来spa
1code 2ci 3字符串 4get 5string 6hash 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
1 |
|
public int[] calcResult(String A, String guess) {
int[] result=new int[2];
if(A==null || guess==null || A.length()!=guess.length()) return result;
int same=0,count=0;
int[] aCount=new int[26];
int[] gCount=new int[26];
//"RGBY","GGRR" "BGGB","GGRR"
for(int i=0;i<A.length();i++){
if(A.charAt(i)==guess.charAt(i)){
same++;
}else{
aCount[A.charAt(i)-'A']++;
gCount[guess.charAt(i)-'A']++;
}
}
for(int i=0;i<26;i++){
if(aCount[i]<gCount[i]){
count+=aCount[i];
}else{
count+=gCount[i];
}
}
result[0]=same;
result[1]=count;
return result;
}