For example:
Secret number: "1807"
Friend's guess: "7810"
Hint: 1 bull and 3 cows. (The bull is 8, the cows are 0, 1 and 7.)
Write a function to return a hint according to the secret number and friend's guess, use A to indicate the bulls and B to indicate the cows. In the above example, your function should return "1A3B".
Please note that both secret number and friend's guess may contain duplicate digits, for example:
Secret number: "1123"
Friend's guess: "0111"
In this case, the 1st 1 in friend's guess is a bull, the 2nd or 3rd 1 is a cow, and your function should return "1A1B".
You may assume that the secret number and your friend's guess only contain digits, and their lengths are always equal.
创建两个变量A, B记录bulls和cows的个数,bulls的个数很简单,记录对应位置字符相等的个数。创建两个数组,保存对应位置不相等时的字符个数。最后累加两个数组中相同位置值小的元素就是B的值。代码如下:
public class Solution { public String getHint(String secret, String guess) { int[] a = new int[10]; int[] b = new int[10]; int A = 0; int B = 0; for(int i = 0; i < secret.length(); i++) { if(secret.charAt(i) == guess.charAt(i)) { A ++; } else { a[secret.charAt(i) - '0'] ++; b[guess.charAt(i) - '0'] ++; } } for(int i = 0; i < a.length; i++) { B += Math.min(a[i], b[i]); } String s = A + "A" + B + "B"; return s; } }