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

299. 猜数字游戏

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

题目描述

【LeetCode】第23天 - 299. 猜数字游戏_第1张图片

解题思路

  • 先遍历一次比较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';
    }
}

你可能感兴趣的:(LeetCode每日一题,leetcode,算法)