題目描述
我們現在有四個槽,每個槽放一個球,顏色可能是紅色(R)、黃色(Y)、綠色(G)或藍色(B)。例如,可能的情況爲RGGB(槽1爲紅色,槽2、3爲綠色,槽4爲藍色),作爲玩家,你需要試圖猜出顏色的組合。比如,你可能猜YRGB。要是你猜對了某個槽的顏色,則算一次“猜中”。要是隻是猜對了顏色但槽位猜錯了,則算一次“僞猜中”。注意,“猜中”不能算入“僞猜中”。
給定兩個string A和guess。分別表示顏色組合,和一個猜測。請返回一個int數組,第一個元素爲猜中的次數,第二個元素爲僞猜中的次數。
測試樣例:
"RGBY","GGRR"
返回:[1,1]
有可能在後面有,所以要遍歷兩次
class Result {
public:
vector<int> calcResult(string A, string guess) {
// write code here
//R, Y, B, G
map<char, int> hash;
vector<int> res(2, 0);
for(int i = 0; i < 4; ++i)
{
if(A[i] == guess[i])
res[0]++;
else
{
hash[guess[i]]++;
}
}
for(int i = 0; i < 4; ++i)
{
if(A[i] != guess[i] && hash[A[i]] > 0)
{
res[1]++;
hash[A[i]]--;
}
}
return res;
}
};