299. 猜数字游戏

  • ​​题目描述​​
  • ​​解题思路​​
  • ​​代码实现​​

题目描述

【LeetCode】第23天 - 299. 猜数字游戏_leetcode

解题思路

  • 先遍历一次比较secret[i]是否与guess[i]相等,若相等公牛数加1。若不等,则分别统计数字出现的次数。
  • 然后将数字出现次数的较小值累加至母牛数。
    (详见代码注释)

代码实现

class Solution {
public String getHint(String secret, String guess) {
//分别统计数字0-9的出现次数,初始时为0
int[] gue = new int[10];
int[] ans = new int[10];
//初始化公牛数与母牛数。
int bull = 0,cow=0;
for(int i=0;i<secret.length();i++){
if(secret.charAt(i) == guess.charAt(i)){
++bull; //相等公牛数加1
}else{
//guess.charAt(i)出现次数加1
++gue[guess.charAt(i) - '0'];
//secret.charAt(i)出现次数加1
++ans[secret.charAt(i) - '0'];
}
}
for(int i=0;i<10;i++){
cow += Math.min(gue[i],ans[i]); //将数字出现次数的较小值累加至母牛数
}

return Integer.toString(bull) + 'A' + Integer.toString(cow) + 'B';
}
}