文章目录
- [299. 猜数字游戏](https://leetcode.cn/problems/bulls-and-cows/)
- 思路:
- 代码:
299. 猜数字游戏
思路:
- 遍历两个字符串
secret
和guess
,若字符既在相同位置上又相等,则位置和数字都正确,对应的a
值加一。 - 若字符在不同位置但相等,则统计每个数字出现的次数,分别存储在
cntS
和cntG
数组中。 - 最后再遍历 0 到 9 的所有数字,取
cntS[i]
和cntG[i]
中较小的一个,累加起来就是数字正确但位置不对的个数,即b
值。 - 最终返回
a + "A" + b + "B"
,表示猜中的数字个数和位置都正确的数量以及数字正确但位置不对的数量。
代码:
// 猜数字游戏
public String getHint(String secret, String guess) {
int a = 0; // 位置和数字都正确的个数
int[] cntS = new int[10]; // 存储secret中各个数字出现的次数
int[] cntG = new int[10]; // 存储guess中各个数字出现的次数
for (int i = 0; i < secret.length(); i++) {
if (secret.charAt(i) == guess.charAt(i)) {
a++; // 若位置和数字都正确,则a加1
} else {
cntS[secret.charAt(i) - '0']++; // 统计secret中各个数字出现的次数
cntG[guess.charAt(i) - '0']++; // 统计guess中各个数字出现的次数
}
}
int b = 0; // 数字正确但位置不对的个数
for (int i = 0; i < 10; i++) {
b += Math.min(cntS[i], cntG[i]); // 统计数字正确但位置不对的个数
}
return a + "A" + b + "B"; // 返回结果字符串
}
点击移步博客主页,欢迎光临~