论文暂告一段落,闲着无聊到 LeetCode 刷刷题,蛤蛤蛤。
题目链接:Bulls and Cows
题目大意如下:
先给出一个数字串secret,再给出一个长度一样的猜测数字串guess。
对guess某个位置上的数字,若在secret串中的相同位置上存在相同的数字,则输出 1A,若有两个这种情况,则输出 2A;
当猜测数字串中除去完全匹配上位置的数字外,还有只猜中数字的情况,则猜中一个记为 1B,猜中两个记为 2B,secret中的数字不能被计数超过一次。
example 1 :
Secret number: “1807”
Friend’s guess: “7810”
Output: 1A3Bexample 2 :
Secret number: “1123”
Friend’s guess: “0111”
Output: 1A1B
代码如下:
public static String getHint6(String secret, String guess) {
char[] secrets = secret.toCharArray();
char[] guesses = guess.toCharArray();
int numA = 0, numB = 0;
int length = guesses.length;
for (int i = 0; i < length; i++) {
if (secrets[i] == guesses[i]) {
numA++;
}
}
int[] countS = new int[10];
int[] countG = new int[10];
for (int i = 0; i < length; i++) {
countS[secrets[i] - '0']++;
countG[guesses[i] - '0']++;
}
for (int i = 0; i < countS.length; i++) {
numB += countS[i] > countG[i] ? countG[i] : countS[i];
}
return numA + "A" + (numB - numA) + "B";
}
运行效果: