咱們如今有四個槽,每一個槽放一個球,顏色多是紅色(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;
}